天天看点

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