スレッドの実行が終了するまで待つ

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

スレッドの調整:インデックス への移動

別のスレッドの実行が終了するまで待つには,そのスレッドの WaitFor メソッドを使用します。WaitFor は,そのスレッドが終了するまで戻りません。スレッドが終了するのは,そのスレッドの Execute メソッドが終了するか,または例外によって終了した場合です。たとえば次のコードは,別のスレッドが実行を終了するまで(スレッドリストオブジェクトを埋めるまで)待ってから,そのリストのオブジェクトにアクセスします。



 if ListFillingThread.WaitFor then
 begin
 with ThreadList1.LockList do
 begin
 for I := 0 to Count - 1 do
 ProcessItem(Items[I]);
 end;
 ThreadList1.UnlockList;
 end;



 if (pListFillingThread->WaitFor())
 {
   TList *pList = ThreadList1->LockList();
 for (int i = 0; i < pList->Count; i++)
 ProcessItem(pList->Items[i]);
 ThreadList1->UnlockList();
 }



先の例では,リスト項目にアクセスできるのは,リストが正常に埋められたことが WaitFor メソッドによって示された場合だけです。このときの戻り値は,待たせているスレッドの Execute メソッドから与えなければなりません。ただし,WaitFor を呼び出したスレッドは,Execute を呼び出したコードの実行結果ではなく,スレッドの実行結果が知りたいので,Execute メソッドが値を返すのではありません。そのかわりに,Execute メソッドは ReturnValue プロパティを設定します。ほかのスレッドが WaitFor を呼び出した場合は,WaitForReturnValue を返します。この戻り値は整数です。戻り値の意味はアプリケーションが決定します。

関連項目