Application.DispatcherUnhandledException Olay

Tanım

Bir uygulama tarafından özel durum oluştuğunda ancak işlenmediğinde gerçekleşir.

public:
 event System::Windows::Threading::DispatcherUnhandledExceptionEventHandler ^ DispatcherUnhandledException;
public event System.Windows.Threading.DispatcherUnhandledExceptionEventHandler DispatcherUnhandledException;
member this.DispatcherUnhandledException : System.Windows.Threading.DispatcherUnhandledExceptionEventHandler 
Public Custom Event DispatcherUnhandledException As DispatcherUnhandledExceptionEventHandler 

Olay Türü

Örnekler

Aşağıdaki örnekte, olayı işleyerek işlenmeyen özel durumların nasıl işlendiği gösterilmektedir DispatcherUnhandledException .

using System.Windows;
using System.Windows.Threading;

namespace SDKSample
{
    public partial class App : Application
    {
        void App_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
        {
            // Process unhandled exception

            // Prevent default unhandled exception processing
            e.Handled = true;
        }
    }
}
Imports System.Windows
Imports System.Windows.Threading

Namespace SDKSample
    Partial Public Class App
        Inherits Application
        Private Sub App_DispatcherUnhandledException(ByVal sender As Object, ByVal e As DispatcherUnhandledExceptionEventArgs)
            ' Process unhandled exception

            ' Prevent default unhandled exception processing
            e.Handled = True
        End Sub
    End Class
End Namespace

Açıklamalar

Varsayılan olarak, Windows Presentation Foundation işlenmeyen özel durumları yakalar, kullanıcılara bir iletişim kutusundan özel durumu bildirir (özel durumu bildirebilirler) ve bir uygulamayı otomatik olarak kapatır.

Ancak, bir uygulamanın merkezi bir konumdan özel işlenmemiş özel durum işlemesi gerçekleştirmesi gerekiyorsa, işlemelisiniz DispatcherUnhandledException.

DispatcherUnhandledException , ana kullanıcı arabirimi iş parçacığında çalıştırılan kod tarafından işlenmeyen her özel durum için bir Application tarafından oluşturulur.

Bir özel durum bir arka plan ui iş parçacığında (kendi Dispatcheriş parçacığına sahip bir iş parçacığı) veya bir arka plan çalışan iş parçacığında (olmayan bir iş parçacığı Dispatcher) işlenmemişse, özel durum ana kullanıcı arabirimi iş parçacığına iletılmaz. Sonuç olarak, DispatcherUnhandledException yükseltilmemiştir. Bu durumlarda, aşağıdakileri yapmak için kod yazmanız gerekir:

  1. Arka plan iş parçacığında özel durumları işleyebilir.

  2. Bu özel durumları ana kullanıcı arabirimi iş parçacığına gönderin.

  3. Ana kullanıcı arabirimi iş parçacığında bunları işleyerek yükseltilmesine izin vermeden DispatcherUnhandledException yeniden oluşturun.

Daha fazla bilgi için bkz . İş Parçacığı Modeline genel bakış.

Olay DispatcherUnhandledException işleyicisine, özel durumla ilgili bağlamsal bilgiler içeren bir DispatcherUnhandledExceptionEventArgs bağımsız değişken geçirilir, örneğin:

Özel durumun kurtarılabilir olup olmadığını belirlemek için bu bilgileri kullanabilirsiniz. Kurtarılabilir bir özel durum FileNotFoundException, örneğin kurtarılamaz bir özel durum olabilir. Örneğin, kurtarılamaz bir StackOverflowExceptionözel durum olabilir.

içinden işlenmeyen DispatcherUnhandledExceptionbir özel durumu işlediğiniz ve WPF'nin işlemeye devam etmemesini istiyorsanız özelliğini trueolarak ayarlamanız Handled gerekir.

Tetikleyen Application diğer olaylardan farklı olarak, DispatcherUnhandledException eşleşen bir korumalı sanal uygulama (OnDispatcherUnhandledException) yoktur. Sonuç olarak, türetilen Application sınıfların işlenmeyen özel durumları işlemek için her zaman ile DispatcherUnhandledException bir olay işleyicisi kaydetmesi gerekir.

Şunlara uygulanır