Tuesday, February 3, 2009

Process usage en C# avec redirection.

Les unixiens connaissent bien le concept de redirection de la sortie resultant d'un processus.
Ceci est lié à des processus en mode console.
Un processus en mode console a une entrée standart , une sortie standart et une sortie erreur standart ( suivé le lien pour plus d'explication ).

Ainsi les processus Windows peuvent caché aussi ce concept , mais cependant dans l'api DotNet, on retrouve ce concept.

Voici le code, ici pour csstidy :

Process process = new Process();
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.FileName = "csstidy.exe";
process.StartInfo.Arguments = cssFilemane + " outputtidy.css";
process.Start();

result = process.StandardOutput.ReadToEnd();
error = process.StandardError.ReadToEnd();


Vous aurez ainsi dans result le texte de sortie du processus.
Si l'on veux scruter ce qu'il se passe dans le processus et par exemple ce dernier montre
son avancement avec la sortie de # par exemple.
On lira la sortie du processus :

while
((str = process.StandardOutput.ReadLine()) != null)
{
}
Regardez cette article pour plus de détail
http://www.codeproject.com/KB/threads/launchprocess.aspx

No comments: