我在我的软件中使用了2个不同的过程。在这两种情况下,我都会读取过程输出,然后给用户一些关于它的指示。
ProcessStartInfo si = new ProcessStartInfo();
si.WindowStyle = ProcessWindowStyle.Hidden;
si.UseShellExecute = false;
si.CreateNoWindow = true;
si.RedirectStandardError = true;
si.RedirectStandardOutput = true;
si.FileName = "proc.exe";
si.Arguments = "some args";
Process p = new Process();
p.StartInfo = si;
p.ErrorDataReceived += cmd_Error;
p.OutputDataReceived += cmd_DataReceived;
p.EnableRaisingEvents = true;
p.Start();
p.BeginOutputReadLine();
p.BeginErrorReadLine();
p.WaitForExit();
在第一种情况下,它完美无缺! 但在另一种情况下,该过程正在完成其工作,但只有终止事件被触发。 使用
运行时si.WindowStyle = ProcessWindowStyle.Normal
我看到这个过程有一个输出。
可能是什么问题?为什么输出事件没有被触发?
答案 0 :(得分:1)
因此,如果一个进程有效,但另一个进程无效,您确定其他进程实际上是在写入stdout吗?
快速测试可以确认。使用以下语法从命令行运行它;
myprocess.exe> output.txt的
如果output.txt为空,那么它不会写入stdout并且您的程序运行正常。