2012-01-26 8 views
1

私はC#WAITANYと逃したイベント

int event_idx = WaitHandle.WaitAny(ExportEvents.ToArray()); 

を使用する場合は、イベントがシグナル状態にある場合WaitAny関数呼び出しの前に、その後WaitAny機能はします:

  1. 結果このイベントIDすぐ
  2. はこれをスキップこのIDは決して発生しません。

答えて

3

任意のハンドルが通知されたときに、このメソッドは戻ります。

お知らせがあるが、それが合図になっていないとき、ハンドルが通知されたときに、それを返すと言います。つまり、ハンドルがすでに通知されている場合、メソッドはただちに戻ります。

もちろん、コール前にハンドルがシグナル状態になっている可能性がありますが、競合状態のためにコール中にシグナルが通知されない可能性があります。

1

これは、待機ハンドルのタイプと他のスレッドが待機しているかどうかによって異なります。すべてのイベントに手動リセットの特性がある場合は、結果がイミデーションになります。自動リセットイベントがあり、別のスレッドが同じイベントを待っている場合は、どのイベントが通知されるかを知る競争です。 the documentationから

関連する問題