2012-05-15 2 views
3

Я создал службу windows .net C#, которая запускает несколько задач. Я включил обработку исключений, но я хотел бы настроить глобальный обработчик, чтобы поймать необработанные исключения в службе windows, как я могу это сделать?необработанные исключения в службе windows

ответ

5

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

You мог использование AppDomain.UnhandledException. Однако в вашем случае весь ваш вызов вашей услуги можно обернуть в блок try/catch. Поскольку вы не указали подробные сведения о том, что вы планируете делать с этим необработанным исключением, ваш правильный путь, я думаю, в этом случае равен , чтобы сбой службы.

try 
{ 
    MainCallToYourService(); 
} 
catch (Exception) 
{ 
    //it's probably too late to do anything useful here, try to log and die 
} 

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

+0

Это правильный ответ. Многие люди ошибаются в обработке исключений. Нет абсолютно никакого смысла в поиске исключений, с которыми вы не справитесь. Когда вы получаете необработанное глобальное исключение, самое лучшее, что вы можете сделать, это крах (так как это фактически то, что уже произошло). Если вы просто хотите его зарегистрировать, используйте «AppDomain.UnhandledException», как вы упомянули. –

+1

Я понимаю это, но все, что я хочу сделать, это иметь возможность регистрировать исключение, поэтому у меня есть его трек. Я попробовал AppDomain.UnhandledException, и я настроил обработчик событий при создании службы, но событие никогда не запускается. Любая идея почему? – amateur

+0

@amateur: вы создаете другие темы или у вас только однопоточный сервис? –