mjl*_*007 5 .net stdout process
我正在产生一个在可见控制台窗口中运行的子进程(它是一个运行MSBuild的批处理文件),我想让进程生成的输出显示在可见的控制台窗口中,并捕获该输出所以我可以在代码中处理它.我已经阅读了其他几个问题以及处理ProcessStartInfo.RedirectStandardOutput等的MSDN文档,我可以捕获重定向流的输出并在代码中处理它就好了:
Process msBuild = new Process();
msBuild.StartInfo.FileName = "Build.bat";
msBuild.StartInfo.UseShellExecute = false;
msBuild.StartInfo.RedirectStandardOutput = true;
msBuild.Start();
string output = msBuild.StandardOutput.ReadToEnd();
msBuild.WaitForExit();
Run Code Online (Sandbox Code Playgroud)
问题是输出不会显示在子进程的控制台窗口中; 我只是在进程运行时屏幕上出现一个空白的控制台窗口,它在完成时消失.
我想我可以隐藏实际的子进程窗口,并显示第二个窗口,我只是将输出写入捕获时,但这似乎比必要的工作更多.有没有办法让输出显示在控制台窗口中,并在完成后仍然捕获它以进行处理?
一旦您重定向标准输出,它就不再指向控制台。要写入控制台,您必须手动执行。
如果您想在流程执行时显示输出,而不是在最后显示 1 个大转储,您可以使用 Process 类的“OutputDataReceived”事件。
| 归档时间: |
|
| 查看次数: |
3245 次 |
| 最近记录: |