我得到了以下代码。
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()一起工作呢?