在我的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();
我测试了许多东西,但没有任何作用。谢谢你的帮助, 聚甲基
答案 0 :(得分:0)
我猜是因为你在另一个线程中访问UI-Control(richTextBox1)。 UI控件只能在UI线程中访问。但是你可以调用访问权限。我自己没有测试它,但我认为它应该防止InvalidOperationException。
process.OutputDataReceived += (s, e) => {
richTextBox1.BeginInvoke(delegate() {
richTextBox1.AppendText(e.Data + "\n");
});
};