天天看點

WPF異常捕獲三種處理 UI線程, 全局異常,Task異常

原文:

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.");