欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

WPF异常捕获三种处理 UI线程, 全局异常,Task异常

程序员文章站 2022-06-21 13:14:48
protected override void OnStartup(StartupEventArgs e){base.OnStartup(e);RegisterEvents();} private void RegisterEvents(){//TaskScheduler.UnobservedTas ......

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