Показать сообщение отдельно
  #10  
Старый 20.09.2012, 11:05
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от ~TB~
У меня в одном приложении примерно так работает. Проблем никаких не наблюдаю. Главное не забывать пинать поток когда нужно.

Код:
procedure TMySuperDuperThread.Execute;
begin
  while not Terminated do
    if not Suspended then
    begin
      if SomeProp then
        ApplySomeProcedure
      else
        Suspend;
    end;
end;
А разве проверка "if not Suspended then" здесь нужна и имеет смысл? Если поток остановлен, то он никак не может проверить своё состояние, а если поток запущен, то это условие всегда будет давать Истину.

Цитата:
Сообщение от icWasya
И самое главное, нафига внутри Execute вся полезная работа делается под Synchronize ?
Я так понял, что в том примере под полезной работой подразумевается это:
Код:
Sleep(100);
А свойство SomeProp нужно, чтобы основной поток мог сигнализировать этому потоку, что нужны результаты его работы.
Ответить с цитированием