码迷,mamicode.com
首页 > 编程语言 > 详细

WPF 线程中异常导致程序崩溃

时间:2020-01-06 12:37:43      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:inf   new   oid   handler   exception   back   queue   run   bar   

原文: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 线程中异常导致程序崩溃

标签:inf   new   oid   handler   exception   back   queue   run   bar   

原文地址:https://www.cnblogs.com/lonelyxmas/p/12155406.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!