来自 MSDN “如果没有等待线程,则等待句柄保持信号状态,直到线程尝试等待它,或者直到它的Reset
方法被调用。”
EventWaitHandle MyWaitHandle = new AutoResetEvent(false);
线程#1:
public void Method1()
{
//do something
//wait for the signal or timeout
MyWaitHandle.WaitOne(10000);
//do something else on receiving signal or after timeout
}
线程#2:
//this would be called when there is a response from the external app
public void Method2()
{
//do something
//send the signal to waiting thread
MyWaitHandle.Set();
}
在我的应用程序中,线程 #1 正在向外部应用程序提交请求并等待信号或超时。如果收到来自外部应用程序线程#2 的响应,则设置等待句柄。即使set
在超时之后也可以调用它。我的问题是
1)极有可能Method2
在超时后调用导致设置信号。这是否意味着以后只要有对 Thread #1 的请求,它就WaitOne(10000)
没有任何作用,会立即释放?
2) 无论如何我不能set
在Method2
超时的情况下打电话吗?这会对 Thread #1 造成任何问题吗?