Управление процессами в .NET - PullRequest
4 голосов
/ 11 марта 2011

В моей настройке «Сервер / Клиент» у меня есть клиентские приложения, управляющие другими приложениями на компьютере (процессы запуска / остановки / перезапуска / запроса). Прямо сейчас, у меня есть очень простая настройка с использованием идентификатора процесса, но мне пришло в голову, прежде чем он выйдет в свет, мне нужно его улучшить.

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

Мне не очень повезло найти его, но могу ли я найти путь к исполняемому сервису? Я полагаю, что моя лучшая ставка при запросе состояния выполнения - это сначала поиск сохраненного ProcessID, в котором он должен быть, если он запущен, проверьте имя файла / исполняемого файла, чтобы убедиться, что оно также совпадает.

Есть ли лучший способ сделать это, или это лучший из возможных сценариев?

1 Ответ

4 голосов
/ 11 марта 2011

Вы можете использовать событие Process.Exited, чтобы получать уведомления о выходе из отслеживаемого процесса. Таким образом, не будет шансов, что такие вещи произойдут, «пока вы не смотрите».

Примечание: для возникновения события Exited сначала необходимо явно установить Process.EnableRaisingEvents на true.

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