是否有辦法全局處理Windows服務的異常?類似的事情在Windows下面窗體應用程序:Windows服務的全局異常處理程序?
Application.ThreadException += new ThreadExceptionEventHandler(new ThreadExceptionHandler().ApplicationThreadException);
是否有辦法全局處理Windows服務的異常?類似的事情在Windows下面窗體應用程序:Windows服務的全局異常處理程序?
Application.ThreadException += new ThreadExceptionEventHandler(new ThreadExceptionHandler().ApplicationThreadException);
這裏是我們建議的人,當他們正在實現他們的Windows應用程序http://exceptioneer.com使用一些非常健壯的代碼。
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
}
}
}
感謝,
菲爾。
與Windows服務有關的「應用程序」在哪裏? – ferventcoder 2015-11-16 16:06:01
您的評論有答案嗎? 「應用程序」 – HaBo 2016-05-16 08:02:57
「應用程序」(https://msdn.microsoft.com/en-us/library/system.windows.forms.application(v=vs.110).aspx)和上面的大部分代碼是特定於WinForms並與Windows服務無關。 'AppDomain.CurrentDomain.UnhandledException'是服務的重要一個。另請參閱http://stackoverflow.com/questions/2456819/how-can-i-set-up-net-unhandledexception-handling-in-a-windows-service進行異常處理討論。 – Rory 2016-06-05 14:04:34
你試過
AppDomain.CurrentDomain.UnhandledException
這將觸發對給定域中未處理的異常,不管它們發生了什麼的線程上。如果您的Windows服務使用多個AppDomain,則您需要爲每個域使用此值,但大多數不會。
如果您的服務使用'System.Timers .Timer'定時器,確實在'Elapsed'事件然後在該事件引發未處理的異常將不會被'AppDomain.CurrentDomain.UnhandledException'事件看作週期性的工作。計時器只是吞下它們,並且對例外無所作爲。 – 2017-01-26 00:18:10
我知道這是一個古老的線程。這同樣適用於System.Threading.Timers嗎? – 2017-10-09 20:03:15
可以在這裏找到Windows服務最相關的答案:http://stackoverflow.com/a/5117790/986720它解釋了爲什麼該異常未被AppDomainUnhandledException處理程序捕獲 – 2016-01-11 19:57:49