2010-06-22 1 views
5

У меня есть приложение .Net, которому необходимо запустить несколько исполняемых файлов. Я использую класс Process, но Process.Start не блокируется. Мне нужно, чтобы первый процесс завершился до второго запуска. Как я могу это сделать?Как я могу запускать процессы синхронно, задавая один и тот же результат?

Кроме того, я хотел бы, чтобы все процессы выводились в одно и то же окно консоли. Как бы то ни было, они, похоже, открывают свои окна. Я уверен, что я могу использовать поток StandardOutput для записи на консоль, но как я могу подавить вывод по умолчанию?

ответ

10

Я считаю, что вы ищете:

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

Для вывода:

StreamReader stdOut = p.StandardOutput; 

Затем вы используете его как любой читатель потока.

Чтобы подавить окно, это немного сложнее:

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

идеальный! Любые идеи о выходе? –

+0

Обновлено для вывода. – Aren

+0

Но как я могу подавить окно консоли, которое появляется для каждого процесса? –