Есть ли способ глобально обрабатывать исключения для службы Windows? Что-то похожее на следующее в приложениях Windows Forms:
Application.ThreadException += new ThreadExceptionEventHandler(new ThreadExceptionHandler().ApplicationThreadException);
Есть ли способ глобально обрабатывать исключения для службы Windows? Что-то похожее на следующее в приложениях Windows Forms:
Application.ThreadException += new ThreadExceptionEventHandler(new ThreadExceptionHandler().ApplicationThreadException);
Вот какой довольно прочный код, который мы советуем людям использовать, когда они реализуют http://exceptioneer.com в своих приложениях Windows.
namespace YourNamespace
{
static class Program
{
[STAThread]
static void Main()
{
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
{
HandleException(e.Exception);
}
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
HandleException((Exception)e.ExceptionObject);
}
static void HandleException(Exception e)
{
//Handle your Exception here
}
}
}
Спасибо,
Фил.
Вы пробовали
AppDomain.CurrentDomain.UnhandledException
Это приведет к сбою необработанных исключений в заданном домене независимо от того, какой поток они встречаются. Если ваша служба Windows использует несколько приложений AppDomains, вам нужно будет использовать это значение для каждого домена, но большинство из них этого не делают.