Wenn über die Process
Klasse ausgeführt wird, können Sie die Streams umleiten, damit Sie sie verarbeiten kann. Sie können von stdout oder stderr synchron oder asynchron lesen. Um die Weiterleitung zu aktivieren, legen Sie die entsprechenden Umleitungseigenschaften für die umzuleitenden Streams auf true
fest (z. B. RedirectStandardOutput
) und setzen Sie UseShellExecute
auf false
. Dann können Sie einfach den Prozess starten und aus den Streams lesen. Sie können auch Input-Rediring-Standard eingeben.
zum Beispiel Prozess- und Druck, was auch immer der Prozess synchron
var proc = new Process()
{
StartInfo = new ProcessStartInfo(@"SomeProcess.exe")
{
RedirectStandardOutput = true,
UseShellExecute = false,
}
};
if (!proc.Start())
{
// handle error
}
var stdout = proc.StandardOutput;
string line;
while ((line = stdout.ReadLine()) != null)
{
// process and print
Process(line);
Console.WriteLine(line);
}
ich die Probe gefunden [hier] (http://msdn.microsoft.com/en-us/library/system. diagnostics.process% 28v = vs.80% 29.aspx), das zeigt, wie stdout und stderr mit Hilfe von Threads gelesen werden können. Siehe auch http://cleancode.sourceforge.net/api/csharp/html/T_CleanCode_IO_ExecProcess.htm. –