Как я выполняю процессы синхронно, будучи нацелен на тот же вывод?

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

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

6
задан Cœur 29 June 2019 в 03:26
поделиться

1 ответ

Я полагаю, вы ищете:

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);
11
ответ дан 9 December 2019 в 22:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: