WPFのスレッドが異常クラッシュするプログラムを引き起こし

一般的に、我々は、クラッシュの原因の異常を避けるために、グローバルWPFキャプチャを追加しています。

Application.Current.DispatcherUnhandledException + = Current_DispatcherUnhandledException。
            AppDomain.CurrentDomain.UnhandledException + = 新しいUnhandledExceptionEventHandler(CurrentDomain_UnhandledException)。
            TaskScheduler.UnobservedTaskException + = TaskScheduler_UnobservedTaskException。

例外がスローされる場合は、より多くの時間のかかる操作のいくつかは、我々は、スレッドを置きます

   System.Threading.ThreadPool.QueueUserWorkItem(新しい System.Threading.WaitCallback((P)=> 
            { 
                System.Threading.Thread.Sleep(1000年);
                 スロー 新しい例外(" BBBを" ); 
            }))。

 

 

 CurrentDomain.UnhandledExceptionは、キャプチャされますが、このキャプチャモードではエラーの後、またはプログラムがクラッシュします。

他のスレッドを考えるための方法の下でその後の研究。

 

     プライベート非同期無効実行()
        {
            のawait Task.Run(()=>
            {
                のThread.sleep(1000);
                新しい例外( "BBB")を投げます;
            });
           
        }

例外がこのようにスローされた後、異常e.Handled = trueを、クラッシュしないことをDispatcherUnhandledExceptionをキャッチされます。

 

 

おすすめ

転載: www.cnblogs.com/czly/p/11858644.html