原文:
WPF異常捕獲三種處理 UI線程, 全局異常,Task異常protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
RegisterEvents();
}
private void RegisterEvents()
//TaskScheduler.UnobservedTaskException += (sender, args) =>
//{
// MessageBox.Show(args.Exception.Message);
// args.SetObserved();
//};
this.DispatcherUnhandledException += App_DispatcherUnhandledException;
TaskScheduler.UnobservedTaskException += new EventHandler<
UnobservedTaskExceptionEventArgs>(TaskScheduler_UnobservedTaskException);
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
private void App_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
static void TaskScheduler_UnobservedTaskException(object sender, UnobservedTaskExceptionEventArgs e)
foreach (Exception item in e.Exception.InnerExceptions)
Console.WriteLine("異常類型:{0}{1}來自:{2}{3}異常内容:{4}",
item.GetType(), Environment.NewLine, item.Source,
Environment.NewLine, item.Message);
//将異常辨別為已經觀察到
e.SetObserved();
private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
MessageBox.Show("Unhandled exception.");