我有一个主机进程负责启动多个子进程。我想将每个子进程的日志消息打印到文件,也打印到主机进程的主控制台窗口。
每个子进程的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())。