title: System.Diagnostics.Process.Start weird behaviour
body: <p>I'm writing an application to start and monitor other applications in C#. I'm using the System.Diagnostics.Process class to start applications and then monitor the applications using the Process.Responding property to poll the state of the application every 100 milisecs. I use Process.CloseMainWindow to stop the application or Process.Kill to kill it if it's not responding.</p>
  
  <p>I've noticed a weird behaviour where sometimes the process object gets into a state where the responding property always returns true even when the underlying process hangs in a loop and where it doesn't respond to CloseMainWindow.</p>
  
  <p>One way to reproduce it is to poll the Responding property right after starting the process instance. So for example</p>
  
  <pre><code>_process.Start();
  bool responding = _process.Responding;
  </code></pre>
  
  <p>will reproduce the error state while</p>
  
  <pre><code>_process.Start();
  Thread.Sleep(1000);
  bool responding = _process.Responding;
  </code></pre>
  
  <p>will work.
  Reducing the sleep period to 500 will introduce the error state again.</p>
  
  <p>Something in calling _process.Responding too fast after starting seems to prevent the object from getting the right windows message queue handler. I guess I need to wait for _process.Start to finish doing it's asynchronous work. Is there a better way to wait for this than calling Thread.Sleep ? I'm not too confident that the 1000 ms will always be enough.</p>