将所有控制台消息重定向到文本框

时间:2014-12-22 14:34:22

标签: c# winforms textbox console output-redirect

首先,抱歉语法错误和英语不好

我正在开发一个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行(或重定向到文本框)。

0 个答案:

没有答案