2010-06-22 16 views
5

Mam aplikację .Net, która musi uruchomić kilka plików wykonywalnych. Używam klasy Process, ale Process.Start nie blokuje. Potrzebuję pierwszego procesu do zakończenia przed drugimi biegami. Jak mogę to zrobić?Jak uruchomić procesy synchronicznie, kierując na te same dane wyjściowe?

Chciałbym również, aby wszystkie procesy były przesyłane do tego samego okna konsoli. Wygląda na to, że otwierają własne okna. Jestem pewien, że mogę użyć strumienia StandardOutput, aby napisać do konsoli, ale jak mogę wyłączyć domyślne wyjście?

Odpowiedz

10

wierzę szukasz:

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

Na wyjściu:

StreamReader stdOut = p.StandardOutput; 

Potem go używać jak każdego czytelnika strumieniem.

Aby stłumić okno jest to trochę trudniejsze:

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

Perfect! Wszelkie pomysły na wyjście? –

+0

Zaktualizowano dane wyjściowe. – Aren

+0

Ale jak mogę ukryć okno konsoli, które pojawia się dla każdego procesu? –

Powiązane problemy