1)调用AsyncWaitHandle.WaitOne会阻止客户端还是肯定会阻止客户端?
2)WaitAll,WaitOne,WaitAny有什么区别?
最佳答案
WaitHandle.WaitOne()
是一个实例方法,它将阻塞直到发出等待句柄(操作完成时)为止。如果先前已经发出信号(即操作已经完成),则对WaitOne()
的调用可能不会被阻塞。 WaitHandle.WaitAll()
和WaitHandle.WaitAny()
是静态方法,使您可以指定多个等待句柄以同时监视:WaitHandle.WaitAll()
将等到所有指定的句柄发出信号后再返回。 WaitHandle.WaitAny()
将在发出任何指定的句柄后立即返回。 这些方法使您可以同时监视许多未完成的异步操作。
背景:
AsyncWaitHandle
是IAsyncResult
接口(interface)上的属性的名称。此属性的实际类型是WaitHandle
,它是Semaphore
,Mutex
和Manual/AutoResetEvent
等类型的抽象基类。另请参阅:Blocking Application Execution Using an AsyncWaitHandle(MSDN)