Один из способов сделать это - добавить обработчик для события Exited
первого процесса, а затем запустить второй процесс оттуда.
void StartProcessOne() {
Process p = Process.Start("foo", "bar");
p.Exited += (sender, e) => StartProcessTwo();
p.Start();
}
void StartProcessTwo() {
Process p = Process.Start("foo2", "bar2");
p.Exited += (sender, e) => StartProcessThree();
p.Start();
}
...
Вы также можете использовать метод WaitForExit()
, который ожидает завершения процесса, прежде чем продолжить выполнение вашего кода. Однако обратите внимание, что это заставляет ваш собственный процесс останавливать выполнение, пока другой процесс не завершится. Это может оставить вас с неотзывчивым пользовательским интерфейсом и тому подобным, что может быть весьма нежелательно. ( source )