他のスレッドによる終了の確認
スレッド関数の作成 への移動
スレッド オブジェクトは、Execute メソッドが呼び出されると実行を開始し(「スレッド オブジェクトの実行」を参照)、Execute が終了するまで実行を継続します。これは、スレッドが特定のタスクを実行し、それが終わると停止するというモデルを反映したものです。しかし、アプリケーションによっては、何らかの外的な基準が満たされるまで実行を継続するスレッドが必要です。
スレッドの実行を終了させるタイミングを他のスレッドから管理することもできます。それには Terminated プロパティを確認します。他のスレッドからスレッドを終了させるには、Terminate メソッドを呼び出します。Terminate は、終了させるスレッドの Terminated プロパティを True に設定します。Terminate メソッドの要求に正しく対応するように Terminated プロパティを確認してそれに応じた処理をするのは Execute メソッドの責任です。以下の例では、その 1 つの方法を示しています。
procedure TMyThread.Execute;
begin
while not Terminated do
PerformSomeTask;
end;
void __fastcall TMyThread::Execute() {
while (!Terminated)
PerformSomeTask();
}