Wysyłanie danych wejściowych / uzyskiwanie danych wyjściowych z aplikacji konsoli (C # / WinForms)

Mam formularz z 3 kontrolkami:

Pole tekstowe, w którym użytkownik może wprowadzać polecenia do wysłania do aplikacji konsoli,Przycisk potwierdzający wysłanie poleceń iPole tekstowe tylko do odczytu do wyświetlania danych wyjściowych z aplikacji.

Chcę, aby użytkownik wprowadził polecenia w pierwszym polu tekstowym, nacisnął przycisk, aby wprowadzić i otrzymać informację zwrotną za pośrednictwem drugiego pola tekstowego.

Wiem, jak używaćProcessStartInfo.RedirectStandardOutput jednak aplikacja zawiesza się, gdy używamStandardOutput.ReadToEnd().

Spojrzałem na asynchronicznieProcess.BeginOutputReadLine() ale mimo, że moja aplikacja się nie zawiesza, jakoś nie otrzymuję odpowiedzi w polu tekstowym, nic nie robi.

Oto mój kod:

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

Czy jest jakikolwiek sposób na sprawne działanie? Dzięki.

questionAnswers(4)

yourAnswerToTheQuestion