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

Цитата:
Сообщение от Aristarh Dark
Однако подобное свойство есть.
Например: FOnTerminate.
Причем если там посмотреть вызовы, то проверки выполняются в каждой процедуре (вызовы одна из другой, смотрите исходники TThread), следовательно теоретически возможно изменение свойства между вызовами.
Свойство OnTerminate основной поток изменяет только после создания потока и до его запуска:
Код:
  Thread := TMyThread.Create(True);
  Thread.OnTerminate := MyMethod; // Здесь спокойно можно присваивать
  Thread.Resume;
  Thread.OnTerminate := MyMethod; // А вот здесь уже нельзя

Цитата:
Сообщение от NumLock
вполне естественно вызывать из основного потока методы Terminate и WaitFor для завершения и ожидания работы потока, когда в самом потоке может быть проверка Terminated, как в первом посте.
Изменение свойства может произойти посреди какой нибудь проверки, в результате чего может нарушиться логика работы.
Для Terminated это не страшно, так как единственное его предназначение это:
Код:
while not Terminated do
begin
...
  if Terminated then Break; // Это тоже не повлияет на логику
...
end;
Ответить с цитированием