title: System.Diagnostics.Process WaitForExit doesnt kill the process on timeout
body: <p>I run <code>7-zip</code> from my c# code:</p>
  
  <pre><code>ProcessStartInfo processStartInfo = new ProcessStartInfo
  {
      WindowStyle = ProcessWindowStyle.Hidden,
      FileName = zipFileExePath,
      Arguments = "x \"" + zipPath + "\" -o\"" + extractPath + "\""
  };
  
  using (Process process = Process.Start(processStartInfo))
  {
      if (process.WaitForExit(timeout))
      {
      }
      else
      {
          s_logger.ErrorFormat("Timeout whilte extracting extracting {0}", zipPath);
      }
  
      process.Close();
  }
  </code></pre>
  
  <p>Now what I see happening is that when the timeout hits, still the <code>7-zip</code> process exists in <code>Task Manager</code>. Why is that happening? I put both close and dispose</p>