Несколько служб Windows, один установщик, удаление зависимостей - PullRequest
1 голос
/ 13 марта 2009

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

Код для установщика выглядит примерно так

ServiceBase[] ServicesToRun;

ServicesToRun = new ServiceBase[] 
{ 
    new Service1() ,
    new Service2() ,
    ...
};

ServiceBase.Run(ServicesToRun);

Таким образом, после установки службы я вижу несколько отдельных служб в окне управления службами Windows, и каждый из них может быть запущен, остановлен, приостановлен, возобновлен независимо.

Однако, если кто-то переносит необработанное исключение, все они останавливаются.

В идеале остановится только служба, в которой возникла проблема, а другие службы продолжат свой веселый путь.

Кто-нибудь может предложить способ сделать это без создания действительно отдельного проекта установщика для каждой службы?

1 Ответ

1 голос
/ 13 марта 2009

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

Вы также можете добавить автоматический перезапуск службы, если ошибка не является критической. Просто убедитесь, что вы добавили тонны журналов в случае отключения службы и перезапуска из-за ошибок.

...