Si en cours d'exécution par la classe Process
, vous pouvez rediriger les flux de sorte que vous pouvez les traiter. Vous pouvez lire stdout ou stderr de manière synchrone ou asynchrone. Pour activer la redirection, définissez les propriétés de redirection appropriées sur true
pour les flux que vous souhaitez rediriger (par exemple, RedirectStandardOutput
) et définissez UseShellExecute
sur false
. Ensuite, vous pouvez simplement démarrer le processus et lire les flux. Vous pouvez également charger l'entrée redirigeant stdin.
par exemple, le processus et l'impression quel que soit le processus écrit stdout synchrone
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);
}
J'ai trouvé l'échantillon [ici] (http://msdn.microsoft.com/en-us/library/system. diagnostics.process% 28v = vs.80% 29.aspx) qui montre comment lire à la fois stdout et stderr avec des threads utiles. Voir aussi http://cleancode.sourceforge.net/api/csharp/html/T_CleanCode_IO_ExecProcess.htm. –