Как запустить процессы синхронно, ориентируясь на один и тот же вывод? - PullRequest
6 голосов
/ 22 июня 2010

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

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

1 Ответ

11 голосов
/ 22 июня 2010

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

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);
...