[Overview][Constants][Types][Classes][Procedures and functions][Variables][Index] | Reference for unit 'Classes' (#rtl)

# TThread

[Properties (by Name)] [Methods (by Name)] [Events (by Name)]

Abstract Thread class.

## Declaration

Source position: classesh.inc line 1705

`type TThread = class`
`public`
`Type`
`TSystemTimes = record` |  | Record for returning processor usage
`IdleTime: QWord;` |  | Processor idle time
`UserTime: QWord;` |  | User code execution time
`KernelTime: QWord;` |  | Kernel (OS) code execution time
`NiceTime: QWord;` |  | Nice (reduced priority) code execution time
`end;`
`protected`
`procedure Execute; virtual; abstract;` |  | Execute method. Must be overridden in a descendant thread.
`procedure Synchronize();` |  | Synchronizes the thread by executing the method in the main thread.
`procedure Queue();` |  | Queue a method for execution in the main thread
`public`
`constructor Create();` |  | Creates a new thread.
`destructor Destroy; override;` |  | Destroys the thread object.
`class function CreateAnonymousThread();` |  | Execute code in an anonymous thread
`class procedure NameThreadForDebugging();` |  | Set a thread name
`class procedure SetReturnValue();` |  | Set return value of a thread
`class function CheckTerminated;` |  | Check if the current thread has finished executing.
`class procedure RemoveQueuedEvents();` |  | Remove methods scheduled for execution from queue
`class procedure SpinWait();` |  | Prevent thread execution in a spin-wait loop
`class procedure Sleep();` |  | Prevent thread execution
`class procedure Yield;` |  | Yield execution to other threads
`class procedure GetSystemTimes();` |  | Return CPU stats
`class function GetTickCount; deprecated ;` |  | Return tick count (32-bit)
`class function GetTickCount64;` |  | Return tick count (64-bit)
`class function ExecuteInThread();` |  | Execute a method or static procedure in a thread
`procedure AfterConstruction; override;` |  | Code to be executed after construction but before execute.
`procedure Start;` |  | Starts a thread that was created in a suspended state.
`procedure Resume; deprecated ;` |  | Resumes the thread's execution. Deprecated, see TThread.Start
`procedure Suspend; deprecated ;` |  | Suspends the thread's execution.
`procedure Terminate;` |  | Signals the thread it should terminate.
`function WaitFor;` |  | Waits for the thread to terminate and returns the exit status.
`property CurrentThread: TThread; [r]` |  | Return current thread instance
`property ProcessorCount: LongWord; [r]` |  | Return the processor count for this system
`property IsSingleProcessor: Boolean; [r]` |  | Is the current system single processor or not
`property FreeOnTerminate: Boolean; [rw]` |  | Indicates whether the thread should free itself when it stops executing.
`property Handle: TThreadID; [r]` |  | Returns the thread handle.
`property ExternalThread: Boolean; [r]` |  | Is the thread instance an external thread ?
`property Priority: TThreadPriority; [rw]` |  | Returns the thread priority.
`property Suspended: Boolean; [rw]` |  | Indicates whether the thread is suspended.
`property Finished: Boolean; [r]` |  | Has the thread finished executing
`property ThreadID: TThreadID; [r]` |  | Returns the thread ID.
`property OnTerminate: TNotifyEvent; [rw]` |  | Event called when the thread terminates.
`property FatalException: TObject; [r]` |  | Exception that occurred during thread execution
`end;`

## Inheritance

`TThread` |  | Abstract Thread class.
`TObject`

## Description

The TThread class encapsulates the native thread support of the operating system. To create a thread, declare a descendant of the TThread object and override the Execute method. In this method, the tthread's code should be executed. To run a thread, create an instance of the tthread descendant, and call it's execute method.

It is also possible to simply execute a method or static procedure in a thread using the TThread.ExecuteInThread class method.

## See also

EThread |  | Thread error exception.
TThread.Execute |  | Execute method. Must be overridden in a descendant thread.
TThread.ExecuteInThread |  | Execute a method or static procedure in a thread

Documentation generated on: May 14 2021