Starten Sie einen Unterprozess in .NET und erfassen Sie die Standardausgabe
.NET bietet eine Möglichkeit, einen Unterprozess zu erstellen und seine Standardausgabe umzuleiten, um die Ausgabe zu erfassen. Die Klasse Process
stellt Methoden zum Erzeugen und Bearbeiten von Prozessen bereit.
Originalcode und seine Einschränkungen
Der bereitgestellte Code versucht, dieses Problem zu lösen, stößt jedoch auf einige Probleme. Da die WaitForExit()
-Methode den Thread blockiert, wird der OutputDataReceived
-Ereignishandler nicht aufgerufen.
Verbesserungsmethoden
Der verbesserte Code bietet eine funktionierende Lösung:
<code class="language-csharp">process.StartInfo.UseShellExecute = false; process.StartInfo.RedirectStandardOutput = true; process.OutputDataReceived += (sender, args) => Console.WriteLine("received output: {0}", args.Data); process.Start(); process.BeginOutputReadLine();</code>
Dieser Code verwendet die Methode BeginOutputReadLine()
, um mit der Überwachung auf Ausgabedaten vom untergeordneten Prozess zu beginnen. OutputDataReceived
Event-Handler werden jetzt korrekt aufgerufen und auf die erfasste Ausgabe kann innerhalb des Event-Handlers zugegriffen werden.
Das obige ist der detaillierte Inhalt vonWie erfasst man STDOUT von einem untergeordneten Prozess in .NET?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!