Aracılığıyla paylaş


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 bildirebilecekleri) 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 ui 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 kullanıcı arabirimi 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şleme.

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

  3. Bunların yükseltilmesine izin vermek DispatcherUnhandledException için bunları işlemeden ana kullanıcı arabirimi iş parçacığında yeniden dağıtın.

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:

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

uygulamasından işlenmeyen DispatcherUnhandledExceptionbir özel durumu işleyip WPF'nin işlemeye devam etmemesini istiyorsanız özelliğini olarak trueayarlamanı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