重定向标准输出casues程序不退出

时间:2017-01-07 00:17:13

标签: c#

我正在qaac.exe拨打Process.Start()(AAC编码器)。 qaac.exe程序在编码时输出到同一行。我不确定它的技术术语是什么,但它导致程序即使完成处理文件也不会退出。这是我的代码:

string output = null;

var proc = new Process();

proc.StartInfo.FileName = "qaac.exe";
proc.StartInfo.Arguments = "-v256 -q2 file.wav";
proc.StartInfo.WorkingDirectory = @"C:\";
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.UseShellExecute = false;

proc.Start();

output = proc.StandardOutput.ReadToEnd();
output += "\r\n";
output += proc.StandardError.ReadToEnd();

proc.WaitForExit();

如果我将-s参数(禁止控制台消息)传递给上面代码中的qaac.exe应用程序,它可以正常工作。所以我的问题是如何从外部程序中获取输出,该外部程序写入控制台窗口中的同一行?

1 个答案:

答案 0 :(得分:1)

qaac.exe是否写入StandardError?可能是因为the Process.StandardOutput文档提及它的缓冲区正在填满导致死锁。

  

//为避免死锁,请对至少一个流使用异步读取操作   //不要对两个重定向流的末尾执行同步读取。