Wie wird die Standardausgabe zeilenweise gelesen?

8

Ich möchte Zeile für Zeile die Standardausgabe des Prozesses überprüfen. Nach dem Lesen der zweiten Zeile ändert sich myProcess.StandardOutput.EndofStream von false in true. Daher wird die while-Schleife beendet. Vielleicht sollte ich etwas anderes benutzen?

%Vor%     
John Ryann 09.01.2014, 17:43
quelle

1 Antwort

11

Das Lesen von StandardOutput ist nicht wie das Lesen von einer Datei mit einem bestimmten Endpunkt. Ein StreamReader, der an StandardOutput angeschlossen ist, kann EndOfStream erreichen (dh alle verfügbaren Ausgaben wurden gelesen), bevor der Prozess beendet wird.

ReadLine wartet jedoch, bis Daten verfügbar sind oder der Stream geschlossen ist. Wenn der Stream geschlossen ist, gibt ReadLine null zurück.

Überschreiben Sie Ihre Hauptschleife, um die blockierende E / A von ReadLine als die Wartebedingung zu verwenden:

%Vor%     
Mike Haboustak 09.01.2014, 18:06
quelle