WPF 线程中异常导致程序崩溃
Posted lonelyxmas
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF 线程中异常导致程序崩溃相关的知识,希望对你有一定的参考价值。
原文:WPF 线程中异常导致程序崩溃
一般我们WPF中都加全局捕获,避免出现异常导致崩溃。
Application.Current.DispatcherUnhandledException += Current_DispatcherUnhandledException; AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException); TaskScheduler.UnobservedTaskException += TaskScheduler_UnobservedTaskException;
但是,一些比较耗时的操作,我们放到线程中,如果抛出了异常
System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback((p) => { System.Threading.Thread.Sleep(1000); throw new Exception("bbb"); }));
CurrentDomain.UnhandledException会捕获到,但是这种捕获方式显示错误后,还是会导致程序崩溃。
后来研究了下,想想换个线程方式。
private async void Run()
{
await Task.Run(() =>
{
Thread.Sleep(1000);
throw new Exception("bbb");
});
}
这种方式抛出异常后,会被DispatcherUnhandledException捕获到,这种异常可以e.Handled=true,不会崩溃。
以上是关于WPF 线程中异常导致程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章