System.Classes.TThread.Queue

提供: RAD Studio API Documentation
移動先: 案内検索

Delphi

procedure Queue(AMethod: TThreadMethod); overload; inline;
procedure Queue(AThreadProc: TThreadProcedure); overload; inline;
class procedure Queue(const AThread: TThread; AMethod: TThreadMethod); overload; static;
class procedure Queue(const AThread: TThread; AThreadProc: TThreadProcedure); overload; static;

C++

void __fastcall Queue(TThreadMethod AMethod)/* overload */;
void __fastcall Queue(_di_TThreadProcedure AThreadProc)/* overload */;
static void __fastcall Queue(TThread* const AThread, TThreadMethod AMethod)/* overload */;
static void __fastcall Queue(TThread* const AThread, _di_TThreadProcedure AThreadProc)/* overload */;

プロパティ

種類 可視性 ソース ユニット
procedure
function
public
System.Classes.pas
System.Classes.hpp
System.Classes TThread


説明

main スレッド内で、メソッド呼び出しを実行します。

Queue により、main スレッドを使用して非同期に実行される AMethod で指定される呼び出しが行われ、それによってマルチスレッドの競合が回避されます。

警告:呼出し側スレッドが main スレッドの場合、Queue は呼び出しを直接実行します(同期的に)。この場合、ForceQueue を使用すると、main スレッド内のメソッド呼び出しの実行をキューに入れます。

AMethod は、呼び出し側スレッドを関連付けます。

  • static メソッドについては、AThread パラメータを使用して、AMethod をどのスレッドにも関連づけられます。
  • main スレッド内の呼び出し側スレッドについての情報を知る必要がない場合には、nil/NULLAThread パラメータに使用することも可能です。
  • RemoveQueuedEvents は、このスレッド情報を使用し、適切なキュー メソッドを見つけます。

メソッドの呼び出しがスレッドセーフかどうかわからない場合は、そのメソッドを Synchronize メソッドまたは Queueメソッド内から呼び出して、確実にメイン スレッドで実行されるようにします。

Synchronize とは違って、現在のスレッドの実行が継続されます。 メイン スレッドは、最終的にキューに入っているすべてのメソッドを処理します。

メモ: また、クリティカル セクションや多重読み取り排他書き込みのシンクロナイザを使って、スレッドセーフでないメソッドを保護することもできます。

関連項目

コード サンプル