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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM