Свойство Terminated

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).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: