Я разрабатываю Службу Windows, которая поддерживает список процессов.Он может выполнять задачи на них.Например - остановить определенный процесс (в пределах его списка), перезапустить определенный процесс, запустить новый процесс и добавить его в список и т. Д.
Эта служба Windows управляется веб-приложением через WCFслужба - служба Windows запускает службу WCF, и веб-приложение подключается к этой службе WCF.Служба WCF экспортирует методы, такие как Restart(int id)
и Stop(int id)
.
. У меня есть несколько вопросов:
Когда процесс неожиданно закрывается (например, из-завнутренняя ошибка), сервис должен обновить значение в некоторой базе данных.Прямо сейчас, чтобы сделать это, у меня просто есть поток, который каждые 30 секунд проверяет, запущен процесс или нет.
Правильно ли это делать?Должен ли я использовать событие Exit
?
Когда служба закрывается, по любой причине всех процессов, которые она поддерживает, должныблизко тоже.Как правильно это сделать?
Я думал о том, чтобы просто пройтись по списку и завершить все процессы при вызове службы OnClose()
.Проблема в том, что событие OnClose()
вызывается не всегда.Например, что если сервис неожиданно закрывается?Он не будет вызывать OnClose()
.
Как мне представить каждую задачу (например, перезапустить процесс или остановить процесс)?
Прямо сейчас я 'м, используя System.Threading.Tasks
.Это правильный путь?
Этот сервис должен быть хорошо масштабируемым, с минимальными ошибками.
Спасибо.