使用DataReceivedEventHandler将子进程输出重定向到父级控制台

时间:2014-06-19 23:56:06

标签: c# process

我有一个主机进程负责启动多个子进程。我想将每个子进程的日志消息打印到文件,也打印到主机进程的主控制台窗口。

每个子进程的ProcessStartInfo如下:

psi.UseShellExecute = false;
psi.CreateNoWindow = true;
psi.ErrorDialog = false;
psi.RedirectStandardInput = true;
psi.RedirectStandardError = true;
psi.RedirectStandardOutput = true;

然后我为子进程设置了这个:

process.OutputDataReceived += (s, e) =>
        {
            File.AppendAllLines(filepath, new string[] { e.Data });
            Console.WriteLine(e.Data);
        }

最后开始这个过程:

process.StartInfo = psi;
process.Start();
process.BeginOutputReadLine();
process.BeginErrorReadLine();

这非常适合将消息写入日志文件,但无论我尝试什么,它都不会在控制台窗口中输出。我已经尝试按照其他地方的建议刷新控制台,但它没有帮助(Console.Out.Flush())。

0 个答案:

没有答案