Hello folks,
I'm using System.Diagnostics.Process to start a thirdparty program
(that works perfectly when started via command line). I'm using
Process.StandardOutput to get the output of the program. That works
for 95 %, but the other 5 % it doesn't. It seems to me that the
started process just hangs, and therefor my program hangs, too
(p.WaitForExit()). I researched that this only happens when the output
of the program is longer than 4096 bytes: I killed the hung process,
WaitForExit returns and in StandardOutput is a string with a length of
4096 chars. The returned string contains the expected output of the
program, but is shortened to 4 KB.
Does somebody know why it hangs and how to fix this problem?
I'm using this code here:
static string GetProcessOutput(string cmd, string args, out string
error)
{
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo = new System.Diagnostics.ProcessStartInfo(cmd, args);
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.Start();
p.PriorityClass = System.Diagnostics.ProcessPriorityClass.High;
p.WaitForExit();
string output = p.StandardOutput.ReadToEnd();
error = p.StandardError.ReadToEnd();
return output.Trim();
}
Thanks in advance,
Benny Fischer.