Delphiスレッドの概要とそのcreateメソッド
2090 ワード
TThreadのClassesユニットでの声明は以下の通りです.
TThreadのCreate()が呼び出されると,ブール型のパラメータCreateSuspendedを渡す必要がある.このパラメータをFalseに設定すると、Create()を呼び出すとExecute()が自動的に呼び出され、スレッドコードが自動的に実行されます.このパラメータがTrueに設定されている場合は、スレッドを起動するためにTThreadのResume()を実行する必要があります.
一般的に、Create()を呼び出すと、他にもいくつかのプロパティ要件が設定されます.したがって、TThreadが既に実行されている場合、TThreadのプロパティを設定すると面倒になる可能性があるため、CreateSuspendedパラメータをTrueに設定する必要があります.
詳細については、コンストラクション関数Create()には、RTLインスタンスBeginThread()の呼び出しが隠されており、スレッドオブジェクトのインスタンスを作成するためにAPI関数CreateThread()が呼び出されています.CreateSuspendedパラメータはCREATE_を渡すかどうかを示します.SUSPENDEDマークはCreateThread()に与えられます.
type
TThread = class
private
FHandle: THandle;
FThreadID: THandle;
FTerminated: Boolean;
FSuspended: Boolean;
FFreeOnTerminate: Boolean;
FFinished: Boolean;
FReturnValue: Integer;
FOnterminate: TNotifyEvent;
FMethod: TThreadMethod;
FSynchronizeException: TObject;
procedure CallOnTerminate;
function GetPriority: TThreadPriority;
procedure SetPriority(Value: TThreadPriority);
procedure SetSuspended(value: Boolean);
protected
procedure DoTerminate; virtual;
procedure Execute; virtual; abstract;
procedure Synchronize(Method: TThreadMethod);
property ReturnValue: Integer read FReturnValue write FReturnValue;
property Terminated: Boolean read FTerminated;
public
constructor Create(CreateSuspended: Boolean);
destructor Destroy; override;
procedure Resume;
procedure Terminate;
function WaitFor: Integer;
property FreeOnTerminate: Boolean read FFreeOnTerminate write FFreeOnTerminate;
property Handle: THandle read FHandle;
property Priority: TThreadPriority read GetPriority write SetPriority;
property Suspended: Boolean read FSuspended write Suspended;
property ThreadID: THandle read FThreadID;
property OnTerminate: TNotifyEvent read FOnTerminate write FOnTerminate;
end;
TThreadのCreate()が呼び出されると,ブール型のパラメータCreateSuspendedを渡す必要がある.このパラメータをFalseに設定すると、Create()を呼び出すとExecute()が自動的に呼び出され、スレッドコードが自動的に実行されます.このパラメータがTrueに設定されている場合は、スレッドを起動するためにTThreadのResume()を実行する必要があります.
一般的に、Create()を呼び出すと、他にもいくつかのプロパティ要件が設定されます.したがって、TThreadが既に実行されている場合、TThreadのプロパティを設定すると面倒になる可能性があるため、CreateSuspendedパラメータをTrueに設定する必要があります.
詳細については、コンストラクション関数Create()には、RTLインスタンスBeginThread()の呼び出しが隠されており、スレッドオブジェクトのインスタンスを作成するためにAPI関数CreateThread()が呼び出されています.CreateSuspendedパラメータはCREATE_を渡すかどうかを示します.SUSPENDEDマークはCreateThread()に与えられます.