Delphi XE2 のドキュメントには、TEvent について次のように記載されています。
特定のスレッドが実行を完了するのを待つのではなく、スレッドが何らかの操作を完了するのを待つ必要がある場合があります。これを行うには、イベント オブジェクトを使用します。イベント オブジェクト (System.SyncObjs.TEvent) は、すべてのスレッドから見えるシグナルのように動作できるように、グローバル スコープで作成する必要があります。
スレッドは、他のスレッドが依存する操作を完了すると、TEvent.SetEvent を呼び出します。SetEvent はシグナルをオンにするため、チェックする他のスレッドは操作が完了したことを認識します。信号をオフにするには、ResetEvent メソッドを使用します。
たとえば、1 つのスレッドではなく、複数のスレッドの実行が完了するまで待機する必要がある状況を考えてみましょう。どのスレッドが最後に終了するかわからないため、いずれかのスレッドの WaitFor メソッドを単純に使用することはできません。代わりに、終了時に各スレッドにカウンターをインクリメントさせ、イベントを設定することで最後のスレッドにすべての処理が完了したことを通知させることができます。
ただし、Delphi のドキュメントには、TEvent.Set イベントが呼び出されたことを別のスレッドが検出する方法については説明されていません。TEvent.Set が呼び出されたかどうかを確認する方法を教えてください。