不太明白,如果仅仅想知道ManualResetEvent.WaitOne方法,查查msdn,如下就是
[C#]
public virtual bool WaitOne(
   TimeSpan timeout,
   bool exitContext
);Parameters
timeout 
The number of milliseconds to wait for the thread to receive a signal. 
exitContext 
true to exit the synchronization domain for the context before the wait (if in a synchronized context), and reacquire it; otherwise, false. 
Return Value
true if the current instance receives a signal; otherwise, false.Res
The caller of this method blocks indefinitely until the current instance receives a signal. Use this method to block until a WaitHandle receives a signal from another thread, such as is generated when an asynchronous operation completes. For more information, see the System.IAsyncResult interface.Override this method to customize the behavior of derived classes.

解决方案 »

  1.   

    ManualResetEvent 是可以手动设置和重置其状态的事件。手动重置的事件的状态将始终保持终止,直到 Reset 方法将其设置为非终止状态。与此类似,该状态将始终保持非终止,直到 Set 方法将其设置为终止状态。任意数目的正在等待的线程或(通过调用其中一个等待函数)随后开始针对指定事件对象的等待操作的线程可以在对象状态为终止时被释放。
    如果为 true,则将初始状态设置为终止;如果为 false,则将初始状态设置为非终止。 
      

  2.   

    不好意思,我是想澄清一下a.WaitOne(0,false)传入参数为0,false时的执行过程 ;