Se si esegue tramite la classe Process
, è possibile reindirizzare i flussi così si può elaborarli. È possibile leggere da stdout o stderr in modo sincrono o asincrono. Per abilitare il reindirizzamento, imposta le proprietà di reindirizzamento appropriate su true
per gli stream che desideri reindirizzare (ad es., RedirectStandardOutput
) e imposta UseShellExecute
su false
. Quindi puoi solo avviare il processo e leggere dagli stream. È anche possibile alimentare l'input reindirizzando lo stdin.
esempio, elaborare e stampare qualunque sia il processo scrive su stdout sincrono
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);
}
fonte
2010-11-06 06:10:15
ho trovato il campione [qui] (http://msdn.microsoft.com/en-us/library/system. diagnostics.process% 28v = vs.80% 29.aspx) che mostra come leggere sia stdout che stderr con i thread utili. Vedi anche http://cleancode.sourceforge.net/api/csharp/html/T_CleanCode_IO_ExecProcess.htm. –