Разработка службы Windows для монитора процессов - PullRequest
5 голосов
/ 02 июля 2011

Я разрабатываю Службу Windows, которая поддерживает список процессов.Он может выполнять задачи на них.Например - остановить определенный процесс (в пределах его списка), перезапустить определенный процесс, запустить новый процесс и добавить его в список и т. Д.

Эта служба Windows управляется веб-приложением через WCFслужба - служба Windows запускает службу WCF, и веб-приложение подключается к этой службе WCF.Служба WCF экспортирует методы, такие как Restart(int id) и Stop(int id).

. У меня есть несколько вопросов:

  • Когда процесс неожиданно закрывается (например, из-завнутренняя ошибка), сервис должен обновить значение в некоторой базе данных.Прямо сейчас, чтобы сделать это, у меня просто есть поток, который каждые 30 секунд проверяет, запущен процесс или нет.

    Правильно ли это делать?Должен ли я использовать событие Exit?

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

    Я думал о том, чтобы просто пройтись по списку и завершить все процессы при вызове службы OnClose().Проблема в том, что событие OnClose() вызывается не всегда.Например, что если сервис неожиданно закрывается?Он не будет вызывать OnClose().

  • Как мне представить каждую задачу (например, перезапустить процесс или остановить процесс)?

    Прямо сейчас я 'м, используя System.Threading.Tasks.Это правильный путь?

Этот сервис должен быть хорошо масштабируемым, с минимальными ошибками.

Спасибо.

1 Ответ

0 голосов
/ 27 июля 2011

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

  1. Напишите небольшую программу, которая может закрыть процессы, которые вы хотите закрыть.
  2. Перейдите в диспетчер управления службами и щелкните правой кнопкой мыши свой сервис.
  3. Перейдите на вкладку «Восстановление» и укажите свою программу для выполнения в списках «Первый сбой», «Второй сбой» и «Сбой последующего запроса».

Надеюсь, это поможет.

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