我正在处理对WaitOneManualResetEvent调用有一些调用的代码。
从 MSDN 文档中,
如果超时为零,则该方法不会阻塞。它测试等待句柄的状态并立即返回。
现在,这是我的一段代码:
Console.WriteLine("abc");
if (manualResetEventObject.WaitOne(0, false))
return;
Console.WriteLine("def");
//More function calls
在这里,根据文档,我希望它打印 abc,从 WaitOne 返回并打印 def。manualResetEventObject此时未发出信号,因此WaitOne的返回值应为假。
但是, def 永远不会打印,我看到一个ThreadInterruptedException被抛出(有一个try/catch块包围它)。
我不明白为什么这不打印 def 或为什么抛出异常。这里到底发生了什么?