2010-06-22 11 views
5

Ho un'applicazione .Net che deve eseguire diversi file eseguibili. Sto usando la classe Process, ma Process.Start non blocca. Ho bisogno che il primo processo finisca prima delle seconde esecuzioni. Come posso fare questo?Come si eseguono i processi in modo sincrono, con lo stesso risultato?

Inoltre, mi piacerebbe che tutti i processi vengano tutti inviati alla stessa finestra della console. Così com'è, sembrano aprire le proprie finestre. Sono sicuro di poter utilizzare lo stream StandardOutput per scrivere sulla console, ma come posso sopprimere l'output predefinito?

risposta

10

Credo che stai cercando:

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

Per l'uscita:

StreamReader stdOut = p.StandardOutput; 

quindi si utilizza come qualsiasi lettore di flusso.

per sopprimere la finestra è un po 'più 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

Perfetto! Qualche idea sull'output? –

+0

Aggiornato per l'output. – Aren

+0

Ma come posso sopprimere la finestra della console che appare per ogni processo? –

Problemi correlati