На этом шаге будут рассмотрены свойства и методы класса TThread.
Несмотря на то, что Delphi предоставляет программисту все возможности программирования средствами Windows API, в библиотеке VCL имеется специальный класс для реализации потоков - класс TThread. Для чего же потребовалось создавать этот класс? Во-первых, класс TThread делает программирование потоков более удобным. Во-вторых, он обеспечивает безопасную работу с VCL.
Свойства и методы класса TThread представлены в таблицах 1 и 2.
| Свойство | Описание | 
|---|---|
| property FreeOnTerminate: Boolean; | 
     Определяет, будет ли объект потока уничтожен автоматически при завершении потока. Если свойство равно True, то поток будет уничтожен автоматически при завершении, если свойство равно False, то поток должен уничтожаться явно в коде приложения.  | 
| property Handle: THandle; | 
     Содержит дескриптор потока. Используется для управления потоком с помощью функций Windows API.  | 
| property Priority: TThreadPriority; | 
     Определяет приоритет потока относительно других потоков в процессе.  | 
| property ReturnValue: Integer; | 
     Определяет значение, возвращаемое потоком при его завершении.  | 
| property Suspended: Boolean; | 
     Показывает, является ли поток приостановленным. Если установить свойство в True, то поток будет приостановлен, если установить свойство в False выполнение потока будет продолжено.  | 
| property Terminated: Boolean; | 
     Показывает, был ли произведен вызов метода Terminate.  | 
| property ThreadID: THandle; | 
     Идентифицирует поток в системе.  | 
| Метод | Описание | 
|---|---|
| constructor Create(CreateSuspended: Boolean); | 
     Создает объект потока. Если параметр CreateSuspended равен False, то метод Execute будет вызван сразу. Если параметр CreateSuspended равен True, то метод Execute будет вызван только после вызова метода Resume.  | 
| destructor Destroy; override; | 
     Уничтожает объект потока и освобождает память, выделенную для него.  | 
| procedure DoTerminate; virtual; | 
     Вызывает событие OnTerminate.  | 
| procedure Execute; virtual; abstract; | 
     Абстрактный метод, содержащий код, который будет выполняться при запуске потока.  | 
| procedure Resume; | 
     Возобновляет выполнение приостановленного потока.  | 
| procedure Suspend; | 
     Приостанавливает выполнение потока.  | 
| procedure Synchronize(Method: TThreadMethod); | 
     Выполняет метод, вызванный в рамках главного VCL потока.  | 
| procedure Terminate; | 
     Дает потоку сигнал на завершение, устанавливая свойство Terminated в значение True.  | 
| function WaitFor: LongWord; | 
     Ожидает завершение потока и возвращает значение, определяемое свойством ReturnValue.  | 
Немного слов о методе Synchronize. Дело в том, что библиотека VCL не защищена от потоков. Все пользовательские компоненты разрабатывались так, что к ним может получить доступ только один поток. И если дополнительно созданный поток и главный поток приложения будут пытаться одновременно, например, вывести что-нибудь в одну область экрана или компонент, то это может привести к ошибке или неадекватной работе приложения. Чтобы этого не произошло и используется метод Synchronize. При его вызове поток останавливается, и управление передается главному потоку, который выполняет процедуру, посланную параметром в метод Synchronize.
   
Класс TThread имеет единственное событие - это событие OnTerminate.
   
property OnTerminate: TNotifyEvent;
 - возникает после возврата из метода 
 Execute и перед уничтожением потока.
На следующем шаге мы изучим основные действия для создания потока.