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.