title: Process Output Capture is VERY slow
body: <p>I'm currently running the following code in order to test if an external application is actually consuming one of my dll's (updater code)</p>
  
  <pre><code> ProcessStartInfo psi = new ProcessStartInfo()
   {
        FileName = "Tasklist.exe",
        Arguments = @"/m MyServices.dll",
        CreateNoWindow = true,
        RedirectStandardOutput = true,
        UseShellExecute = false
   };
   Process p = new Process();
   p.StartInfo = psi;
   p.Start();
   //debug output box, just to see everything that returns
   txtOutput.Text = p.StandardOutput.ReadToEnd();
   p.WaitForExit();
   Refresh();
  
   if (txtOutput.Text.Contains("TestProgram.exe"))
        MessageBox.Show("Found It");
  </code></pre>
  
  <p>Now, this code WORKS!!!....but its STUPID slow.  I can type that same command into a cmd window and get a response in a tenth of a second, but for some reason the pause on that line <code>p.StandardOutput.ReadToEnd()</code> is taking anywhere from 1 to 5 MINUTES!!</p>
  
  <p>And now the actual question:</p>
  
  <p>Does anyone know why it would be that slow? Or possibly how to fix it and make it acceptably fast?</p>
  
  <p><strong>Update: More data</strong></p>
  
  <p>If I use a shell window and dont actually Capture the output, I can watch the task run in the shell window.  It runs marginally (very marginally) faster, but still sits and takes a minute before the output starts appearing in the shell window.  No idea what its doing.</p>