Ich führe eine EXE-Datei, die einige c-Code von meinem C# winform enthält, aber ich bekomme die vollständige Ausgabe des c-Code erst nach der vollständigen Ausführung von exe. Ich möchte, dass die Exe ihre Ausgabe synchron an meine Winform weiterleitet (Zeile für Zeile in Echtzeit).Synchronous lesen stdout eines Prozesses
var proc = new Process
{
StartInfo = new ProcessStartInfo
{
FileName = "background.exe",
Arguments = command,
UseShellExecute = false,
RedirectStandardOutput = true,
CreateNoWindow = true
}
};
proc.Start();
while (!proc.StandardOutput.EndOfStream)
{
ConsoleWindow.AppendText(proc.StandardOutput.ReadLine());
ConsoleWindow.AppendText(Environment.NewLine);
}
Was meinst du mit "irgendeinem c-Code"? Kein Text wird zur Ausgabe geschrieben, es sei denn, der ausführende Prozess * setzt ihn dort hin. Sie sollten den Code 'background.exe' überprüfen. Und stellen Sie sicher, dass 'background.exe' eigentlich eine kompilierte binäre ausführbare Datei ist und nicht nur eine C-Datei mit einer anderen Erweiterung. –
Haben Sie diese [Frage] überprüft (http://stackoverflow.com/questions/285760/how- to-spawn-a-process-und-capture-its-stdout-in-net) und diese [Frage] (http://stackoverflow.com/questions/18588659/redirect-process-output-c-sharp)? –
Überprüft alle Codebeispiele und sie lesen die Ausgabe erst nach Abschluss des Prozesses. –