Отправка ввода / вывода вывода из консольного приложения (C # / WinForms)
У меня есть форма с 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();
}
}
Есть ли способ, которым я могу сделать это гладко? Благодарю.