我正在使用Windows窗體應用程序,並使用System.Timers.Timer來定期檢查數據庫中的數據。如何獲取Timer Elapsed事件中發生的異常?
如何獲取發生在計時器中的異常發送到主應用程序中的事件處理程序?如果我使用下面的代碼,異常get會被「吞下去」,並且主應用程序永遠不會得到它(即使我有處理ThreadException和UnHandledException的異常)。
// Main Form
Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
// Manager class
private System.Timers.Timer _timer;
void _timer_Elapsed(object sender, ElapsedEventArgs e)
{
try
{
doSomeDatabaseActions();
}
catch (Exception ex)
{
throw new ApplicationException("How do I get this error back into main thread...", ex);
}
}
代碼示例請問? – hrh 2012-04-25 16:31:03
我想我得到它,我將異常傳遞給我的主線程上的函數,然後該函數在拋出異常之前在函數中使用this.Invoke()。我是否正確理解這一點? – hrh 2012-04-25 16:41:43
是否有任何新的方法來捕獲.net 4.5的意外錯誤?它仍然吞嚥,並不是無論如何記錄錯誤沒有包裝整個_timer_Elapsed裏面試試catch? – MonsterMMORPG 2014-08-21 13:02:49