我有一个带有 3 个控件的表单:
- 用户输入命令以发送到控制台应用程序的文本框,
- 用于确认要发送的命令的按钮和
- 用于显示应用程序输出的只读文本框。
我想要的是用户在第一个文本框中输入命令,按下按钮输入并通过第二个文本框接收反馈。
我知道如何使用ProcessStartInfo.RedirectStandardOutput
,但是,当我使用StandardOutput.ReadToEnd()
.
我查看了异步Process.BeginOutputReadLine()
,但是,即使我的应用程序没有挂起,不知何故我在文本框中没有任何响应,它绝对什么也没做。
这是我的代码:
public partial class MainForm : Form
{
private void MainForm_Load(object sender, EventArgs e)
{
InitializeInterpreter();
}
private void InitializeInterpreter()
{
InterProc.StartInfo.UseShellExecute = false;
InterProc.StartInfo.FileName = "app.exe";
InterProc.StartInfo.RedirectStandardInput = true;
InterProc.StartInfo.RedirectStandardOutput = true;
InterProc.StartInfo.RedirectStandardError = true;
InterProc.StartInfo.CreateNoWindow = true;
InterProc.OutputDataReceived += new DataReceivedEventHandler(InterProcOutputHandler);
InterProc.Start();
}
private static void InterProcOutputHandler(object sendingProcess, DataReceivedEventArgs outLine)
{
if (!String.IsNullOrEmpty(outLine.Data))
{
OutputTextBox.Append(Environment.NewLine + outLine.Data);
}
}
private void Enterbutton_Click(object sender, EventArgs e)
{
InterProc.StandardInput.Write(CommandtextBox.Text);
InterProc.BeginOutputReadLine();
}
}
有什么办法可以让我顺利运行吗?谢谢。