Цитата:
Сообщение от 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;