Ich habe eine kleine Konsole Anwendung, und ich möchte die Ausgabe in C# lesen. Deshalb habe ich dieses Code-Snippet erstellt. Die Eingabeaufforderung wird geöffnet, aber nichts wird angezeigt.Deadlock in System.Diagnostic.Process
System.Diagnostics.Process process = new System.Diagnostics.Process();
process.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;
process.StartInfo.FileName = DirectoryPath + "Test.exe";
process.StartInfo.Arguments = "-showAll";
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.Start();
process.WaitForExit(2000);
String strOutput = process.StandardOutput.ReadToEnd();
Wenn I UseShellExecute
, RedirectStandardOutput
und die letzte Zeile zu entfernen, öffnet die Eingabeaufforderung und die Test.exe
gezeigt, aber ich brauche die Ausgabe als Streich- und so habe ich diese Attribute verwenden, um die StandardOutput
Ich habe auch versucht, ein Timeout von 2 Sekunden (process.WaitForExit(2000)
) zu setzen, aber die leere Eingabeaufforderung wird nicht nach 2 Sekunden geschlossen.
Wenn ich die leere Eingabeaufforderung im Debug-Modus manuell schließe, hat die Variable strOutput meine angeforderten Informationen.