如何在我的visual studio应用程序页面上显示控制台中正在运行的程序数据输出。
答案 0 :(得分:1)
好的,基于你的评论,我认为你想要执行一个控制台程序并将其输出重定向到你的visual studio输出窗口? 以下示例位于C#
中var processStartInfo = new ProcessStartInfo()
{
FileName = "cmd.exe",
Arguments = "/c ping www.google.de",
WindowStyle = ProcessWindowStyle.Hidden, //to hide the cmd window
RedirectStandardOutput = true, //needed to redirect the output
UseShellExecute = false
};
var process = new Process()
{
StartInfo = processStartInfo
};
if (process.Start())
{
while (!process.StandardOutput.EndOfStream)
{
var outputLine = process.StandardOutput.ReadLine();
if(outputLine != null)
Debug.WriteLine(outputLine);
}
}
并不是说也可以使用事件
process.OutputDataReceived += process_OutputDataReceived;
但只有当整行打印到stdout时才会引发此事件。如果应用程序正在写入缓冲区而未明确调用Console.Out.Flush();
。 Ping示例不能使用事件方法,因此我选择了同步读取。
如果您不想了解更多关于事件驱动方式的信息,请查看MSDN