进程运行时如何逐行捕获进程STDOUT和STDERR。(C#)我将执行一个进程(lame.exe)将WAV文件编码为MP3。我想处理一个进程的STDOUT和STDERR来显示进度信息。我需要使用线程吗?我无法理解。一些简单的示例代码将不胜感激。谢谢如果通过Process类运行,您可以重定向流以便对其进行处理。您可以同步或异步读取stdout或stderr。要启用重定向,请将要重定向的流的相应重定向属性设置为true并将UseShellExecute设置为false(例如,RedirectStandardOutput)。然后您可以启动该过程并从流中读取。您还可以输入重定向标准输入的输入。例如,处理并打印进程同步写入stdout的任何内容if(!proc.Start()){//处理错误}varstdout=proc.StandardOutput;弦线;while((line=stdout.ReadLine())!=null){//处理并打印Process(line);控制台.WriteLine(行);您应该能够使用Process.OutputDataReceived事件收听STDOUT。MSDN页面上有一个示例。STDERR也有一个Process.ErrorDataReceived事件。有一个MSDN的例子...这里有一个简化版:以上是C#学习教程:如何在进程运行期间逐行捕获进程STDOUT和STDERR。(C#)所有分享的内容,如果对你有用,需要了解更多C#学习教程,希望大家多多关注——varStdOut="";varStdErr="";varstdout=newStringBuilder();varstderr=newStringBuilder();varpsi=newProcessStartInfo();psi.FileName=@"something.exe";psi.CreateNoWindow=true;psi.UseShellExecute=false;psi.RedirectStandardOutput=true;psi.RedirectStandardError=true;varproc=newProcess();proc.StartInfo=psi;proc.OutputDataReceived+=(sender,e)=>{stdout.AppendLine(e.Data);};proc.ErrorDataReceived+=(sender,e)=>{stderr.AppendLine(e.Data);};proc.开始();proc.BeginOutputReadLine();proc.BeginErrorReadLine();proc.WaitForExit(10000);//根据sachin-joseph的评论StdOut=stdout.ToString();StdErr=stderr.ToString();本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
