Enviando entrada / recebendo saída de um aplicativo de console (C # / WinForms)

Eu tenho um formulário com 3 controles:

Uma caixa de texto para o usuário inserir comandos para enviar a um aplicativo de console,Um botão para confirmar os comandos a serem enviados eUma caixa de texto somente leitura para exibir a saída do aplicativo.

O que eu quero é que o usuário insira comandos na primeira caixa de texto, pressione o botão para entrar e receber feedback através da segunda caixa de texto.

Eu sei usarProcessStartInfo.RedirectStandardOutput mas, no entanto, o aplicativo trava quando eu usoStandardOutput.ReadToEnd().

Eu dei uma olhada no assíncronoProcess.BeginOutputReadLine() mas, mesmo que meu aplicativo não seja interrompido, de alguma forma não obtenho resposta na caixa de texto, ele não faz absolutamente nada.

Aqui está meu código:

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();
    }
}

Existe alguma maneira que eu possa ter isso funcionar sem problemas? Obrigado.

questionAnswers(4)

yourAnswerToTheQuestion