2

我想要的只是将进程的标准输出重定向到文件。听起来很简单,但我尝试的一切都不起作用:

  1. 将 DOS 样式的重定向放在参数列表中(例如param1 param2 > output.txt)不起作用;

  2. 使用RedirectStandardOutput = true作品,但是,显然该过程在存在时不会引发事件。所以通过定义的处理程序process.Exited += ... 不会执行。需要明确的是,一旦我删除了该RedirectStandardOutput = true语句,它确实会引发一个事件。

我究竟做错了什么 ?

4

1 回答 1

1

方法#2必须是要走的路。
该问题似乎是由阻止触发Exited事件的输出缓冲引起的。

您应该考虑消除Exited事件处理程序。相反,订阅OutputDataReceived事件并检查Process.HasExited处理程序中的属性以执行清理工作:

process.OutputDataReceived += new DataReceivedEventHandler(process_OutputDataReceived);

...

void process_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
    Process p = (Process) sender;
    if(p.HasExited) ...
}
于 2012-10-14T01:52:59.593 回答