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


Anmelden zum Antworten