C# OutputDataReceived没有实时输出

C# OutputDataReceived没有实时输出,c#,C#,hii我正在使用cmd,cmd需要至少10秒来完成所有工作。 大约每隔一秒钟,我就要读一行。 但我不知道我的代码出了什么问题,它会在进程完成后一次性抛出所有cmd行。 我希望有人能帮助我摆脱这个问题。:) //方法 //输出数据 private void process_OutputDataReceived(object sender, DataReceivedEventArgs e) { if (!string.IsNullOrEmpty(e.data

hii我正在使用cmd,cmd需要至少10秒来完成所有工作。 大约每隔一秒钟,我就要读一行。 但我不知道我的代码出了什么问题,它会在进程完成后一次性抛出所有cmd行。 我希望有人能帮助我摆脱这个问题。:) //方法

//输出数据

private void process_OutputDataReceived(object sender, DataReceivedEventArgs e)
        {
             if (!string.IsNullOrEmpty(e.data))
        {
            if (InvokeRequired)
            {
                Action action = () => richTextBox1.AppendText(e.data + "\r\n");
                richTextBox1.Invoke(action);
            }
            else
            {
                richTextBox1.AppendText(e.data + "\r\n");
            }
        }
        }
//btn码

private void button1_Click(object sender, EventArgs e)
    {
        BackgroundWorker bW = new BackgroundWorker();
        bW.DoWork += (s, eb) =>
            {
                readBack();
            };
        bW.RunWorkerAsync();
    }

这是正常的,大多数检测到其输出被重定向的程序将切换到缓冲输出。这大大提高了吞吐量。只有当缓冲区充满容量或被显式刷新时,才会得到一些东西。后者通常仅在程序终止时发生。所以你一下子就把一切都搞定了。如果需要修改程序,则必须显式刷新输出缓冲区。这通常就是结束的地方。对不起,我是新手,你的意思是我无法修复它?
private void button1_Click(object sender, EventArgs e)
    {
        BackgroundWorker bW = new BackgroundWorker();
        bW.DoWork += (s, eb) =>
            {
                readBack();
            };
        bW.RunWorkerAsync();
    }