2010-06-22 10 views
5

Tengo una aplicación .Net que necesita ejecutar varios ejecutables. Estoy usando la clase Process, pero Process.Start no bloquea. Necesito que el primer proceso termine antes de la segunda ejecución. ¿Cómo puedo hacer esto?¿Cómo ejecuto procesos de forma sincrónica, buscando el mismo resultado?

Además, me gustaría que todos los procesos salgan a la misma ventana de consola. Tal como están las cosas, parecen abrir sus propias ventanas. Estoy seguro de que puedo usar la transmisión StandardOutput para escribir en la consola, pero ¿cómo puedo suprimir la salida predeterminada?

Respuesta

10

Creo que usted está buscando:

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

Para la salida:

StreamReader stdOut = p.StandardOutput; 

continuación, se utiliza como cualquier lector corriente.

Para suprimir la ventana que es un poco más difícil:

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

perfecto! Alguna idea sobre la salida? –

+0

Actualizado para salida. – Aren

+0

¿Pero cómo suprimo la ventana de la consola que aparece para cada proceso? –

Cuestiones relacionadas