我有一个应用程序,其中有一个使用cmd程序的Process
。进程的输出被重定向如下:
pr.StartInfo.RedirectStandardOutput = true;
pr.StartInfo.UseShellExecute = false;
pr.StartInfo.CreateNoWindow = true;
pr.EnableRaisingEvents = true
pr.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
pr.OutputDataReceived += new DataReceivedEventHandler(OnDataReceived);
pr.ErrorDataReceived += new DataReceivedEventHandler(OnDataReceived);
接着,输出内容会使用以下代码写入控制台:
public void OnDataReceived(object sender, DataReceivedEventArgs e)
{
if(e.Data != null)
{
Console.WriteLine(e.Data);
}
}
我的问题是Visual Studio打印输出的结果与命令行输出的结果非常不同。例如,我正在尝试从输出中提取数据,以查看已完成多少工作。我的应用程序输出如下:
0K .......... .......... .......... .......... .......... 1% (null)
50K .......... .......... .......... .......... .......... 2% (null)
100K .......... .......... .......... .......... .......... 3% (null)
150K .......... .......... .......... .......... .......... 5% (null)
原始命令行程序输出(随着时间的推移,进度条和百分比逐渐累积):
100%[===================================]
这可能看起来不是很大的差异,但对于我要实现的目标而言,它是很重要的。为什么Visual Studio的输出结果与CMD的输出结果不完全相同呢?
PS:两个示例的参数都是相同的。
wput
。您尝试过添加进度条参数吗? - Pieter van Ginkel