UI スレッドと作業スレッドの間で通信する必要がある場合、スレッド セーフ (ハンドルの再構築) のために非表示のウィンドウを作成する必要があることが知られています。
例として:
Form1
TProgressBar
バックグラウンドで実行中の同じ名前のN 個の動的に作成されたインスタンスがあります。WM_REFRESH
タスク スレッド内でのみ呼び出されることが常に保証されます。Form1
H : THandle property
次のプロシージャを割り当てます。手順 RefreshStat(var Message: TMessage); メッセージ WM_REFRESH;
の内部
RefreshStat
では、バックグラウンド スレッドが 1 つしかない場合、パラメータを使用L
しW
てタスク ID と位置を簡単にマッピングできます。
タイトルが知りたいことを表しているかどうかはわかりませんが、複数のバックグラウンド タスクが実行されているアプリケーションがあるとします。
私の場合、私はTProgressBar
進行状況を報告するために使用します。
AllocateHwnd
すべてのメッセージが競合状態なしで非表示のウィンドウに到着することを保証しますか?
2 つ以上のタスクが同時にメッセージを投稿するとどうなりますか?
これを手動で制御する必要がある場合は、カスタム メッセージで別のメッセージ ループ システムを作成する以外に、他に何かすることがあるでしょうか。
質問が十分に明確であることを願っています。