我在C#中异步读取一个进程的输出时遇到了问题。 我在这个网站上发现了一些其他类似的问题,但他们并没有真正帮助我。 这里是我做的:如何读取以在C#中异步结束进程输出?
- 结交新工艺
- 设置的StartInfo -FileName,参数,CreateNoWindow(真),UseShellExecute(假),RedirectStandardOutput(真)
- 事件处理程序添加到OutputDataReceived;
- 启动进程,BeginOutputReadLine,然后WaitForExit()。
它工作正常,但启动过程的输出写入一些百分比(%
),我想,但我不能,因为我的代码逐行地读取和百分比显示不出来。
例子:
%0,%1...%100
Finished.
我的输出:
%0
Finished.
这里是我的程序的当前代码:
StringBuilder sBuilder = new StringBuilder();
static void proc_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
sBuilder.AppendLine(e.Data);
}
static void CommandExecutor()
{
Process process = new Process
{
StartInfo = new ProcessStartInfo
{
FileName = /*path of the program*/,
Arguments = /*arguments*/,
CreateNoWindow = true,
UseShellExecute = false,
WindowStyle = ProcessWindowStyle.Hidden,
RedirectStandardOutput = true
}
};
process.OutputDataReceived += new DataReceivedEventHandler(proc_OutputDataReceived);
process.Start();
process.BeginOutputReadLine();
process.WaitForExit();
}
你已经把一个断点在appenline方法,看看它有多少次打?在控制台应用程序中,百分比是否覆盖彼此或连续? – 2012-03-02 12:17:40
覆盖百分比。我会把一个断点看看会发生什么...... – 2012-03-02 12:25:14
它被击中了八次...... – 2012-03-02 12:31:11