У меня есть приложение, которое делает
Process.Start()
запустить другое приложение «Азбука». Я хочу дождаться окончания этого приложения (процесс умирает) и продолжить выполнение. Как мне это сделать?
Может быть несколько экземпляров приложения «ABC», запущенных одновременно.
Ответы:
Я думаю, вы просто хотите это:
См. Страницу MSDN для метода. Он также имеет перегрузку, в которой вы можете указать время ожидания, поэтому вы не будете ждать вечно.
источник
Использовать
Process.WaitForExit
? Или подписаться наProcess.Exited
событие, если вы не хотите блокировать? Если это не помогает, пожалуйста, дайте нам больше информации о ваших требованиях.источник
WaitForExit
сначала ... в некоторых случаях вы можете захотеть выполнить больше кода, когда что-то завершится, но это не значит, что вам нужно блокировать текущий поток.Process.Exited
событие, я считаю, что вам нужно предварительно настроить процесс, установивProcess.EnableRaisingEvents
значение true. Хотя, учитывая, что этому вопросу уже более трех лет, возможно, этоProcess.EnableRaisingEvents
не было чем-то особенным во время его задавания.Process.Exited
мероприятия. Спасибо! +1 за полнотуЯ делаю следующее в моем заявлении:
Там есть несколько дополнительных функций, которые могут оказаться полезными ...
источник
Вы можете использовать ожидание выхода или перехватить свойство HasExited и обновить свой пользовательский интерфейс, чтобы информировать пользователя (управление ожиданиями):
источник
У меня был случай, когда
Process.HasExited
после закрытия окна, принадлежащего процессу, ничего не изменилось. ТакProcess.WaitForExit()
и не сработало. Я должен был контролировать,Process.Responding
что стало ложным после закрытия окна так:Возможно, это кому-то поможет.
источник
Я думаю, что Process.WaitForExit должен быть именно тем, что вы ищете.
источник
Ссылаясь на пример Microsoft: [ https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.process.enableraisingevents?view=netframework-4.8]
Лучше всего было бы установить:
в противном случае код будет заблокирован. Также никаких дополнительных свойств не требуется.
источник
Как говорит Джон Скит, используйте
Process.Exited
:источник
Попробуй это:
источник