Как можно дождаться завершения процесса Windows и его подпроцессов? - PullRequest
1 голос
/ 13 июля 2010

У нас есть приложение запуска, которое выполняет некоторую настройку (запуск сервера), запускает дочерний процесс, ожидает (через рабочий поток) выхода дочернего процесса, а затем выполняет некоторую очистку (останавливая сервер).Это уже установлено и работает нормально.

Однако некоторые из наших приложений могут запускать другие приложения.Так, например, программа запуска может запустить приложение A, а затем я могу нажать кнопку в приложении A, которая запускает приложение B. Затем я закрываю приложение A, вызов запуска Process.WaitForExit модуля запуска, и модуль запуска останавливает сервер - не подозревая, чтоПриложение B все еще работает.Мы используем средство запуска только для тестирования разработки, так что это не кризис, но это неудобно, когда приложение B пытается установить связь с сервером и вылетает.

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

Эти приложения (как запускающие, так и запускаемые приложения) находятся в .NET.Это нормально, если мне нужно написать специальный код (например, открытие именованного семафора) в каждом приложении, чтобы сделать эту работу;Я просто не уверен, что это лучший способ сделать это.

Бонусные баллы, если есть какой-то способ только дождаться завершения моих приложений - например, если мое приложение запускает Блокнот,Я не хочу дождаться закрытия Блокнота;Я просто хочу дождаться приложений, которым нужен сервер.Но это не требование, а тонкость.

Ответы [ 2 ]

0 голосов
/ 13 июля 2010

Изменение состояния выключения сервера в приложении запуска.Выключайте сервер, только если ни одно из имен ваших процессов не запущено.Вы можете периодически проверять ваши имена процессов.Завершите работу сервера, если ничего не найдено.

0 голосов
/ 13 июля 2010

На самом деле, самый простой способ сделать это - заставить родительский процесс ждать своего дочернего процесса (-ов), а затем просто ждать родительского процесса, как и вы. Вы можете выбрать, какие именно ждать таким образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...