将流传递给Debug.Write()

时间:2013-06-28 17:46:52

标签: c# .net stream stdout

我正在使用Process.Start运行命令行实用程序。出于调试目的,我希望将其输出流提供给Visual Studio的Debug Output面板(Debug.Write)。我想实时做这件事,而不是等待完成这个过程,然后立刻写下来。

我知道这在理论上是可行的,但我对Stream对象的经验不足以知道如何做到这一点。

2 个答案:

答案 0 :(得分:4)

这可能不是你想要的,但我认为它让你走上了正确的轨道。

p.StartInfo.UseShellExecute = false; 
p.StartInfo.RedirectStandardOutput = true;
p.OutputDataReceived += p_OutputDataReceived;
p.Start();
p.BeginOutputReadLine();

然后,您的事件处理程序用于接收数据。

void p_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
    Debug.Write(e.Data);
}

答案 1 :(得分:1)

CliWrap使处理流程变得微不足道。这是您特定情况的外观:

// Pipe the output directly to Debug.WriteLine
var cmd = Cli.Wrap("app.exe") | Debug.WriteLine;

await cmd.ExecuteAsync();