1)调用AsyncWaitHandle.WaitOne会阻止客户端还是肯定会阻止客户端?

2)WaitAll,WaitOne,WaitAny有什么区别?

最佳答案

  • WaitHandle.WaitOne()是一个实例方法,它将阻塞直到发出等待句柄(操作完成时)为止。如果先前已经发出信号(即操作已经完成),则对WaitOne()的调用可能不会被阻塞。
  • WaitHandle.WaitAll()WaitHandle.WaitAny()是静态方法,使您可以指定多个等待句柄以同时监视:
  • WaitHandle.WaitAll()将等到所有指定的句柄发出信号后再返回。
  • WaitHandle.WaitAny()将在发出任何指定的句柄后立即返回。

  • 这些方法使您可以同时监视许多未完成的异步操作。
    背景:AsyncWaitHandleIAsyncResult接口(interface)上的属性的名称。此属性的实际类型是WaitHandle,它是SemaphoreMutexManual/AutoResetEvent等类型的抽象基类。

    另请参阅:Blocking Application Execution Using an AsyncWaitHandle(MSDN)

    10-06 13:14