Application.DispatcherUnhandledException Olay
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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:
Arka plan iş parçacığında özel durumları işleyebilir.
Bu özel durumları ana kullanıcı arabirimi iş parçacığına gönderin.
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 durum (Exception).
Kaynağı Dispatcher () olanDispatcher.
Ö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 true
olarak 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.