.NET (C#) でマルチスレッド サーバー内に「インストルメンテーション」を作成しています。
ManualResetEvent
値の変更を気にせずに .NET の値を確認するのはかなり簡単です。
aManualResetEvent.WaitOne( 0 );
イベントを待たずにブール値を返します。
AutoResetEvent
ただし、 ;から同じ情報を取得するのに途方に暮れているようです。イベントを呼び出すanAutoResetEvent.WaitOne( 0 )
と、set
返されるときにイベントがリセットされます (定義による)。
この時点で決定できる最善のオプションは、イベントを実際にテストするときに を に変更しAutoResetEvent
、ManualResetEvent
手動でリセットすることです。
ManualResetEvent theEventFormerlyKnownAsAutoResetEvent;
...
// Using the event:
if ( theEventFormerlyKnownAsAutoResetEvent.WaitOne( timeout )
{
theEventFormerlyKnownAsAutoResetEvent.Reset();
...
}
...
// Instrumentation to get event state (shouldn't change anything):
bool eventIsSet = theEventFormerlyKnownAsAutoResetEvent.WaitOne( 0 );
// Update instrumentation
の状態を確認するより良い方法はありAutoResetEvent
ますか? AutoResetEvent
可能であれば、の本質的な原子性を好みます。