Senden input/erste Ausgabe aus der console-Anwendung (C#/WinForms)

Ich habe ein Formular mit 3 Steuerung:

  1. Eine textbox für die Eingabe
    Befehle zum senden an eine Konsole
    Anwendung,
  2. Eine Taste zum bestätigen der Befehle
    gesendet werden und
  3. Ein nur-lese-Textfeld zur Anzeige der
    Ausgabe der Anwendung.

Was ich will, ist für die Benutzer zur Eingabe von Befehlen in das erste Textfeld, und drücken Sie die Taste und geben und erhalten feedback über die zweite textbox.

Ich weiß, wie Sie ProcessStartInfo.RedirectStandardOutput aber, aber, die app hängt sich auf wenn ich StandardOutput.ReadToEnd().

Hatte ich einen Blick auf die asynchrone Process.BeginOutputReadLine() aber, auch wenn mir die app nicht hängen, irgendwie bekomme ich keine Antwort in der textbox, es bringt absolut nichts.

Hier ist mein code:

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

Gibt es eine Möglichkeit, ich kann diese reibungslos laufen? Danke.

<dumm Author>Sie wissen, Sie können dies tun, ohne Umleitung der standard-in/out?</Stumme Kommentar - > ich nehme an, Sie testen wollen, wie re-Richtung funktioniert, aber Sie haben nicht erklärt, dass Sie Ihre Frage an alle.
Kannst du bitte etwas erläutern?
"Was ich will, ist für die Benutzer zur Eingabe von Befehlen in das erste Textfeld, und drücken Sie die Taste und geben und erhalten feedback über die zweite textbox" meinen Sie eigentlich "einen Befehl eingeben (die würde normalerweise führen Sie in einer Eingabeaufforderung/"dos" - Fenster), führen Sie den Befehl in den hintergrund, und zeigen Sie die Befehle, die Ausgabe in die zweite text-box"? Wenn ja, ignorieren, was ich gerade sagte.
Yep, das ist es, was ich meinte.

InformationsquelleAutor Zach | 2009-11-19

Schreibe einen Kommentar