property Terminated: Boolean;
Данное свойство используется для завершения потока "в мягкой форме", с возможностью корректно освободить ресурсы. Для завершения потока необходимо установить значение данного свойства равным True.
Также следует обратить внимание, что именно значения этого свойства проверяется в цикле метода Execute.
Метод Terminate
function Terminate: Integer;
Метод Terminate используется для окончательного завершения потока. Но этот метод не делает никаких принудительных действий по остановке потока. Происходит только установка свойства Terminated в значение True.
Метод Terminate автоматически вызывается из деструктора объекта. При завершении работы поток - объект класса TThread будет дожидаться, пока завершится поток- объект операционной системы. Таким образом, если поток не умеет завершаться корректно, вызов деструктора потенциально может привести к тупику.
При необходимости немедленно завершить поток необходимо использовать API функцию TerminateThread (см).
Свойство FreeOnTerminate
property FreeOnTerminate: Boolean;
|
|
Если значение данного свойства равно True, то деструктор потока будет вызван автоматически по его завершении. Такой подход удобен в тех случаев, когда неизвестно даже примерное время окончания потока. Поток будет запущен, а при завершении сам освободит занятые ресурсы (принцип «выстрелил и забыл» - «fire and forget»).
Метод WaitFor
function WaitFor: Integer;
Метод WaitFor предназначен обеспечения простой и удобной синхронизации потоков, он позволяет одному потоку дождаться момента завершения другого потока. Например, если к коде потока FirstThread написана строка
Code:= SecondThread.WaitFor;
то поток FirstThread остановится до момента завершения потока SecondThread. Метод WaitFor возвращает код завершения ожидаемого потока (см. свойство Returnvalue).