title: What would be the equivalent to the Windows API CreateEvent function in C#
body: <p>I have an example for cross-thread event signalling in C++.</p>
  
  <pre><code>HANDLE WriteCompleted = CreateEvent(NULL, FALSE, FALSE, NULL);
  
  SetEvent(WriteCompleted);
  WaitForSingleObject(pThis-&gt;WriteCompleted, INFINITE);
  CloseHandle(WriteCompleted);
  </code></pre>
  
  <ol>
  <li><p>If <em>SetEvent()</em> sets the event, then what clears that event? Does <em>WaitForSingleObject()</em> clears this event on return?</p></li>
  <li><p>What would be the approach to implement the same idea using C#?</p></li>
  </ol>