【发布时间】:2011-12-01 19:08:37
【问题描述】:
我得到以下代码
System.Diagnostics.Process capp = new System.Diagnostics.Process();
capp.StartInfo.UseShellExecute = false;
capp.StartInfo.RedirectStandardOutput = true;
capp.StartInfo.RedirectStandardError = true;
capp.EnableRaisingEvents = false;
capp.StartInfo.FileName = "app.exe";
capp.StartInfo.Arguments = "-i -v -mj";
capp.Start();
consoleOutput = capp.StandardOutput.ReadToEnd() + capp.StandardError.ReadToEnd();
if (!capp.WaitForExit(10000)) capp.Kill();
还有一个问题,如果外部应用程序正常工作,它完成任务需要不到 10 秒的时间。如果它由于某种原因停止/挂起,尽管使用
if (!capp.WaitForExit(10000)) capp.Kill();
正如其他主题中所建议的那样,它一直在工作。在我的情况下,上面的行似乎根本不起作用,我想这与我阅读 StandardOutput 和 StandardError 的事实有关。如何修复我的代码以使读取输出和 WaitForExit() 放在一边?
【问题讨论】: