C# - 实时读取(丰富)文本框中的批处理文件

时间:2017-10-31 13:17:26

标签: c# batch-file command-line

在我的Windows窗体程序中,我想要实时读取批处理文件。经过搜索,我找到了办法。但它只适用于控制台。如果我用richtextbox.appendtext等替换console.writefile,它会显示“InvalidOperationException”。

这是我的代码

var process = new Process
        {
            StartInfo =
            {
                WorkingDirectory = @"C:\Users\Rayan\Desktop",
                FileName = "cmd.exe",
                Arguments =  "/c test.bat",
                CreateNoWindow = true,
                RedirectStandardOutput = true,
                RedirectStandardInput = true,                  
                UseShellExecute = false           
            }
        };

        process.OutputDataReceived += (s, e) => { richTextBox1.AppendText(e.Data + "\n"); };
        process.Start();
        process.BeginOutputReadLine();
        process.WaitForExit();

我测试了许多东西,但没有任何作用。谢谢你的帮助, 聚甲基

1 个答案:

答案 0 :(得分:0)

我猜是因为你在另一个线程中访问UI-Control(richTextBox1)。 UI控件只能在UI线程中访问。但是你可以调用访问权限。我自己没有测试它,但我认为它应该防止InvalidOperationException。

process.OutputDataReceived += (s, e) => { 
    richTextBox1.BeginInvoke(delegate() {
        richTextBox1.AppendText(e.Data + "\n");
    });
};