有几个重载AutoResetEvent.WaitOne()
当信号触发时signal.Set(),所有重载中的方法WaitOne()都会返回true。
在超时重载中,当超时到期时signal.WaitOne(timeout)返回。false
那么没有参数的重载signal.WaitOne()呢?
她可以只回来true,永远不回来false吗?
有几个重载AutoResetEvent.WaitOne()
当信号触发时signal.Set(),所有重载中的方法WaitOne()都会返回true。
在超时重载中,当超时到期时signal.WaitOne(timeout)返回。false
那么没有参数的重载signal.WaitOne()呢?
她可以只回来true,永远不回来false吗?
WaitOne()调用另一个重载:https://referencesource.microsoft.com/#mscorlib/system/threading/waithandle.cs,212
接下来是静态方法调用
InternalWaitOne:https://referencesource.microsoft.com/#mscorlib/system/threading/waithandle.cs,235
WaitOneNative然后调用 WinAPI 函数WaitForSingleObjectEx。所以WaitOne没有参数true,要么返回要么抛出AbandonedMutexException。因为如果指定了无限超时,它将WaitForSingleObjectEx无法返回状态。WAIT_TIMEOUThttps://docs.microsoft.com/en-us/windows/desktop/api/synchapi/nf-synchapi-waitforsingleobjectex