我有一個wpf c#應用程序。Task.Run中的全局錯誤處理
我通常使用一個全局錯誤處理程序捕獲所有的錯誤:
private void Application_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
{
try
{
Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() => Xceed.Wpf.Toolkit.MessageBox.Show(e.Exception.ToString(), "Error",
MessageBoxButton.OK, MessageBoxImage.Error)));
e.Handled = true;
InformedWorkerDataService.Common.Shared.RecordMessage(e.Exception.ToString(), true);
}
finally { }
}
但是,如果開始一個task.run「的碼位」,然後拋出一個錯誤我觀察到,誤差不抓:
Task.Run(() =>
{
throw and error here
});
,所以我必須在把「嘗試捕獲」的事情捕捉到它:
Task.Run(() =>
{
try
{
throw an error here
}
catch (Exception ex)
{
do something with error
}
});
〜這防衛廳具有全局錯誤處理程序的對象
我該怎麼辦?
試試['TaskScheduler.UnobservedTaskException'](https://msdn.microsoft.com/ en-us/library/system.threading.tasks.taskscheduler.unobservedtaskexception(v = vs.110).aspx)event – dkozl
@dkozl cool - thanks :) –