бросить исключение в службе Windows - PullRequest
7 голосов
/ 02 января 2009

Вызывает ли исключение в службе Windows сбой службы?

т.е. его нужно будет перезапустить вручную

Примечание: Я выбрасываю исключение из условия catch.

Ответы [ 4 ]

4 голосов
/ 02 января 2009

Если исключение не обработано и возвращается к методу OnStart (), происходит сбой службы. Обычно в журнале событий Windows вы увидите сообщение, подобное следующему:

"Служба MyServiceName Service неожиданно прервана. Она сделала это x раз (а).

4 голосов
/ 02 января 2009

Не совсем так - это вызовет проблемы, только если исключение не обработано.

3 голосов
/ 02 января 2009

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

Вы можете поместить обработчик в службу, чтобы перехватывать все необработанные исключения (включая все подпотоки службы). В VB.NET вам нужно будет добавить обработчик для AppDomain.CurrentDomain.UnhandledException. Это похоже на C #. Затем он поймает все, что всплывет после вашего запуска. Вы можете использовать его там или разрешить ему сбой службы.

2 голосов
/ 02 января 2009

Если вы вызываете исключение в Catch, и над ним нет ничего, чтобы перехватить его, то это приведет к остановке службы. Метод OnStart () нуждается в try / catch. Если вы не хотите останавливать службу при возникновении исключительной ситуации, вам нужно обработать ее (войти в систему и двигаться дальше, или как угодно).

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

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