检查AutoResetEvent状态

时间:2012-07-16 16:53:29

标签: .net multithreading autoresetevent

是否可以检查实际AutoResetEvent对象的处理方式?它是通过超时还是从另一个方法调用Set()来触发的?

这是我的代码。

private AutoResetEvent autoResetEvent = new AutoResetEvent(false);
private int timeout = 30000;

public void SyncMethod()
{
    // some code before
    autoResetEvent.WaitOne(timeout);
    // if autoResetEvent called by timeout then { do some stuff } 
    // some code after
}
public void AsyncMethod()
{
    // some code before
    // ok I am done
    autoResetEvent.Set();
}

2 个答案:

答案 0 :(得分:13)

WaitHandle :: WaitOne Method(Int32)

返回值类型:System :: Boolean

如果当前实例收到信号,则为true;否则,错误。

因此,在超时后返回false。

答案 1 :(得分:3)

是,检查返回值

  

如果当前实例收到信号,则为true;否则,错误。

http://msdn.microsoft.com/en-us/library/cc189907