【发布时间】:2018-05-19 10:22:57
【问题描述】:
我在 C# 上创建了一个交互式 shell,但我不知道如何访问我的表单控件并将接收到的值分配给我的文本框,我知道线程无法访问 UI 线程,但在这种情况下,我不知道'似乎无法解决问题,该外壳中将有很多输入和输出,我想确保向用户显示所有内容。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Process process = new Process();
process.StartInfo.FileName = "echoo.exe";
process.StartInfo.Arguments = "";
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.ErrorDataReceived += new DataReceivedEventHandler(OutputHandler);
process.StartInfo.RedirectStandardInput = true;
process.Start();
StreamWriter sw = process.StandardInput;
process.BeginOutputReadLine();
process.BeginErrorReadLine();
sw.WriteLine("sent");
process.WaitForExit();
}
static void OutputHandler(object sendingProcess, DataReceivedEventArgs outLine)
{
Form1.textBox1.Text = outLine.Data;
}
}
【问题讨论】:
标签: c# multithreading forms ms-access