Grafisches Frontend
-
Ich habe Probleme mit dem Umleiten des Standard-Outputs einer Konsolenanwendung für ein grafisches Frontend:
Process program; // eigentlich als Member deklariert ProcessStartInfo info = new ProcessStartInfo("Program.exe"); info.UseShellExecute = false; info.CreateNoWindow = true; info.RedirectStandardInput = true; info.RedirectStandardOutput = true; program = Process.Start(info); program.OutputDataReceived += new DataReceivedEventHandler(OutputDataReceived); program.BeginOutputReadLine();
In OutputDataReceived werfe ich eine Exception, um festzustellen, dass es auch wirklich aufgerufen wird. Das Programm (Program.exe) hat direkt am Anfang einen Standard-Output. Wenn ich das Ganze jetzt aufrufe, passiert - nichts. Aber wenn ich das C#-Programm wieder beende, wird plötzlich die Exception geworfen - egal wann ich es beende. Wie kommt das und wie kann ich es beheben (sodass OutputDataReceived direkt nach einem Output aufgerufen wird)?
-
Nachtrag: In Form_Closing() beende ich gleichzeitig den Prozess, sodass es oben heißen müsste "Wenn ich das Konsolenprogramm beende, wird die Exception geworfen". Aber laut MSDN sollte der das Event in Real-time ausgelöst werden. Hat niemand eine Idee?
-
Prüfe auf Deadlocks