首先,抱歉语法错误和英语不好
我正在开发一个C#winforms项目,它简化了另一个基于cmd的程序的参数。 我正在使用流程重定向方法,它有点好用,但是...... 大约10秒后它会滞后,并且每隔15-20秒仅将结果输出到文本框。 我想知道是否有办法“刷新”流缓冲区。
到目前为止,这是我的一些代码(只有代码才能处理cmd):
Process cmdHorch = new Process()
{
StartInfo = new ProcessStartInfo()
{
FileName = baseDir + "donich.exe",
Arguments = startstring,
CreateNoWindow = true,
UseShellExecute = false,
ErrorDialog = false,
RedirectStandardInput = true,
RedirectStandardOutput = true,
RedirectStandardError = true,
},
EnableRaisingEvents = true,
SynchronizingObject = this
};
cmdHorch.OutputDataReceived += (s, ea) => this.findLine.AppendText(ea.Data + Environment.NewLine);
cmdHorch.Start();
cmdHorch.BeginOutputReadLine();
我试过用“cmdHorch.StandardOutput.BaseStream.Flush();”来解决这个问题。为了强制冲洗流,但它失败了... 关于这个缓冲问题,我已经搜索了几天而没有任何运气。
编辑: 如果我使用与我在此程序中输入的相同参数运行donich.exe,它会输出每个(最长的)2秒(最少30个字符串)
编辑(2 / 1-2015) donich.exe在运行的第一秒向控制台吐出大约1600行(或重定向到文本框)。