2011-06-23 17 views
3

私のアプリケーションでスレッドが実行されています。スレッド内で、自動リセットイベントが終了するのを待っています。私はそれを使用した後、イベントのハンドルを閉じることを確認したい。 2つのオプションがあります。すぐにラインWaitForSingleObject SetEventを呼び出した後にCloseHandleを呼び出す

CloseHandleを呼び出すSetEvent

  • を呼び出した後に適切なアプローチである1私を提案してくださいイベントのCloseHandleを呼び出す

  • 答えて

    2

    SetEventの後にCloseHandleを呼び出すとわかりません。 WaitForSingleObjectの後に(必要に応じて)CloseHandleに電話する必要があります。

    4

    すべてのスレッドが使用を終了したらハンドルを閉じます。 WaitForSingleObjectが賢明に聞こえるようになった後(成功すれば、SetEventは完了しているはずです)。

    また、スレッドごとに(DuplicateHandleなどを使用して)ハンドルのコピーを作成し、終了時にそれぞれのコピーを閉じることができます。それは間違っていることがずっと難しく、コードの分析が少なくて済みます。

    2

    イベントがそのジョブを完了し、もう必要ないと確信したときに、イベントハンドルを閉じる。あなたの場合は、それが検出された後に設定されています。だから、WaitForSingleObjectのブロックを解除した後でイベントを閉じる。

    関連する問題