Перехват всех исключений в службе Windows C # - PullRequest
3 голосов
/ 27 марта 2011

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

PS - Я прочитал abt unhandles обработчик исключений, но я не уверен, остановит ли это сбой службы. У меня также есть попытка перехватить блокировку во всем, чтобы перехватить универсальное исключение (обработчик прошедших событий).

Ответы [ 2 ]

5 голосов
/ 27 марта 2011

Нет, нет.Вы можете использовать событие UnhandledException для генерации отладочной информации перед сбоем приложения.

Но создание собственной обработки исключений не должно быть таким сложным.Все сервисы имеют точку входа (Service.OnStart), где вы запускаете свой собственный поток / таймер.Оберните весь код в этом потоке / таймере с помощью try / catch.Это должно охватить все исключения.

Хотя есть исключение.Любые потоки / таймеры, созданные в вашем коде, все равно могут привести к сбою приложения.Вы должны также обернуть все обратные вызовы таймера / потока с помощью try / catch.

0 голосов
/ 28 марта 2011

Привет, я заставил мое приложение работать, проглотив исключение, как это происходит в .net framewroek 1.1. Ниже приведены настройки, которые я добавил в файл app.config.

<configuration> 
 <runtime> 
  <legacyUnhandledExceptionPolicy enabled="1" /> 
  </runtime> 
</configuration> 
...