I try to redirect standard output from ResGen.exe. I use following code
ProcessStartInfo psi = new ProcessStartInfo( \"resxGen.exe\" );
psi.CreateNoWindow =
The bottom line would seem to be that the placement of p.WaitForExit
is incorrect; this method call should be made only after reading what you want from the stream.
From MSDN:
// Start the child process.
Process p = new Process();
// Redirect the output stream of the child process.
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = "Write500Lines.exe";
p.Start();
// Do not wait for the child process to exit before
// reading to the end of its redirected stream.
// p.WaitForExit();
// Read the output stream first and then wait.
string output = p.StandardOutput.ReadToEnd();
p.WaitForExit();
Also note that your use of StreamReader sr = p.StandardOutput
is redundant here since when the value ofmessage
is set you access the stream using p.StandardOutput.ReadToEnd();
- note the p.StandardOutput
as opposed to sr.ReadToEnd()
.