2013-04-10 83 views
2

我发现了这样的代码。它运行一个进程,然后打印它写入标准输出的内容。问题是,它不打印任何东西,直到过程退出,这可能需要很长时间(或根本不需要)。因此,我宁愿打印输出AS IT GOES。我怎样才能做到这一点?打印输出,因为它与进程

var startInfo = new ProcessStartInfo("cmd", "/c sleepy.bat") 
    {RedirectStandardOutput = true, UseShellExecute = false, CreateNoWindow = true }; 
var p = new Process(){StartInfo = startInfo}; 
p.Start(); 
string output = p.StandardOutput.ReadToEnd(); 
Console.WriteLine(output); 

sleepy.bat可能是

echo "About to execute really slow query.." 
sleep 20 
echo "Finished!" 

回答

2

尝试使用p.StandardOutput.BeginOutputReadLine()。您将收到来自OutputDataReceived事件中的过程的输出。

有关扩展示例,请参阅MSDN article

+0

感谢亚历克斯,这工作。 – 2013-04-10 16:27:35