title: AutoResetEvent Set called after timeout
body: <p>From MSDN "If there are no waiting threads, the wait handle remains signaled until a thread attempts to wait on it, or until its <code>Reset</code> method is called."</p>
  
  <pre><code>EventWaitHandle MyWaitHandle = new AutoResetEvent(false);
  </code></pre>
  
  <p>Thread # 1:</p>
  
  <pre><code>public void Method1()
  {
    //do something
    //wait for the signal or timeout
    MyWaitHandle.WaitOne(10000);
    //do something else on receiving signal or after timeout
  }
  </code></pre>
  
  <p>Thread # 2:</p>
  
  <pre><code>//this would be called when there is a response from the external app
  public void Method2()
  {
    //do something
    //send the signal to waiting thread
    MyWaitHandle.Set();
  }
  </code></pre>
  
  <p>In my application Thread # 1 is submitting a request to external app and waiting for a signal or timeout. If a response is received from the external app Thread # 2 sets the wait handle. This <code>set</code> can be called even after the timeout. My questions are </p>
  
  <p>1) It is highly possible that <code>Method2</code> can be called after the timeout resulting in setting the signal. Does that mean whenever there is a request to Thread # 1 in the future, the <code>WaitOne(10000)</code> has no effect and will be released immediately?</p>
  
  <p>2) Is there anyway for me to not call <code>set</code> in <code>Method2</code> in case of timeout? Would that cause any problems to the Thread # 1?</p>