2010-06-22 17 views
5

J'ai une application .Net qui doit exécuter plusieurs exécutables. J'utilise la classe Process, mais Process.Start ne bloque pas. J'ai besoin que le premier processus se termine avant les deuxièmes passages. Comment puis-je faire ceci?Comment exécuter des processus de manière synchrone, en ciblant la même sortie?

De plus, j'aimerais que tous les processus soient affichés dans la même fenêtre de console. Tel qu'il est, ils semblent ouvrir leurs propres fenêtres. Je suis sûr que je peux utiliser le flux StandardOutput pour écrire sur la console, mais comment puis-je supprimer la sortie par défaut?

Répondre

10

Je crois que vous êtes à la recherche:

Process p = Process.Start("myapp.exe"); 
p.WaitForExit(); 

Pour la sortie:

StreamReader stdOut = p.StandardOutput; 

Ensuite, vous l'utiliser comme tout lecteur de flux.

Pour supprimer la fenêtre, il est un peu plus difficile:

ProcessStartInfo pi = new ProcessStartInfo("myapp.exe"); 
pi.CreateNoWindow = true; 
pi.UseShellExecute = true; 

// Also, for the std in/out you have to start it this way too to override: 
pi.RedirectStandardOutput = true; // Will enable .StandardOutput 

Process p = Process.Start(pi); 
+0

Parfait! Des idées sur la sortie? –

+0

Mis à jour pour la sortie. – Aren

+0

Mais comment puis-je supprimer la fenêtre de console qui s'affiche pour chaque processus? –