我正在.NET(C#)的多线程服务器中创建一些“仪器”。
检查 .NET 的值相当容易,ManualResetEvent
无需担心更改值:
aManualResetEvent.WaitOne( 0 );
返回一个布尔值而不等待事件。
但是,我似乎无法从AutoResetEvent
;获取相同的信息。如果您调用anAutoResetEvent.WaitOne( 0 )
一个set
事件,它将在返回时重置该事件(根据定义)。
此时我可以确定的最佳选择是在实际测试事件时将其更改AutoResetEvent
为 aManualResetEvent
并手动重置:
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
有没有更好的方法来检查 a 的状态AutoResetEvent
?如果可能的话,我更喜欢它的内在原子性AutoResetEvent
。