デルファイXE2のドキュメントがにTEventについては、これを言う:TEventが設定されていることをどのように検出しますか?
時には、あなたではなく、実行を完了するために特定のスレッドを待っているよりも、いくつかの操作を完了するためのスレッドを待つ必要があります。これを行うには、イベントオブジェクトを使用します。イベントオブジェクト(System.SyncObjs.TEvent)は、グローバルスコープで作成して、すべてのスレッドから見える信号のように動作できるようにする必要があります。
スレッドが他のスレッドが依存する操作が完了すると、スレッドはTEvent.SetEventを呼び出します。 SetEventはシグナルをオンにするので、チェックされた他のスレッドは操作が完了したことを知ります。信号をオフにするには、ResetEventメソッドを使用します。
たとえば、1つのスレッドではなく複数のスレッドが実行を完了するのを待たなければならない状況を考えてみましょう。どのスレッドが最後に終了するかわからないので、スレッドのいずれかのWaitForメソッドを使用するだけではいけません。代わりに、各スレッドが終了したときにカウンタをインクリメントさせ、イベントを設定することによってすべてのスレッドが最後に信号を受け取るようにすることができます。
ただし、Delphiのドキュメントでは、別のスレッドがTEvent.Setイベントが呼び出されたことを検出する方法については説明しません。 TEvent.Setが呼び出されたかどうかをチェックする方法を説明してください。
すべてのスレッド/イベントが通知されるのを待ってみませんか?なぜ待つのではなくテストするのですか? –
ご意見ありがとうございます。私がここで受け取った助けに応えて、実際にはイベントが通知されるのを待つようにコードをプログラムしました。 –