Sdílet prostřednictvím


Application.DispatcherUnhandledException Událost

Definice

Nastane v případě, že aplikace vyvolá výjimku, ale nezpracuje ji.

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 

Event Type

Příklady

Následující příklad ukazuje, jak zpracovat neošetřené výjimky zpracováním DispatcherUnhandledException události.

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

Poznámky

Windows Presentation Foundation ve výchozím nastavení zachytí neošetřené výjimky, upozorní uživatele na výjimku z dialogového okna (ze kterého mohou ohlásit výjimku) a automaticky vypne aplikaci.

Pokud však aplikace potřebuje provádět vlastní neošetřené zpracování výjimek z centralizovaného umístění, měli byste zpracovat DispatcherUnhandledException.

DispatcherUnhandledException je vyvolána Application pro každou výjimku, která je neošetřena kódem spuštěným v hlavním vlákně uživatelského rozhraní.

Pokud se výjimka nezpracuje na vlákně uživatelského rozhraní na pozadí (vlákno s vlastním Dispatchervláknem) nebo pracovním vlákně na pozadí (vlákno bez a Dispatcher), výjimka se nepředá hlavnímu vláknu uživatelského rozhraní. V důsledku toho DispatcherUnhandledException není vyvolána. Za těchto okolností budete muset napsat kód, který provede následující akce:

  1. Zpracování výjimek ve vlákně na pozadí

  2. Tyto výjimky odešlete do hlavního vlákna uživatelského rozhraní.

  3. Znovu je načítejte na hlavním vlákně uživatelského rozhraní, aniž by bylo možné je zpracovat, aby bylo možné DispatcherUnhandledException je zvýšit.

Další informace najdete v přehledu modelu threading.

Obslužná rutina DispatcherUnhandledException události se předává DispatcherUnhandledExceptionEventArgs argument, který obsahuje kontextové informace týkající se výjimky, včetně:

Tyto informace můžete použít k určení, jestli je výjimka obnovitelná nebo ne. Obnovitelná výjimka může být FileNotFoundExceptionnapříklad výjimka, která není StackOverflowExceptionobnovitelná, například.

Při zpracování neošetřené výjimky z DispatcherUnhandledExceptiona nechcete, aby WPF pokračovat ve zpracování, je nutné nastavit Handled vlastnost na true.

Na rozdíl od ostatních událostí, které Application vyvolává, DispatcherUnhandledException nemá odpovídající chráněnou virtuální implementaci (OnDispatcherUnhandledException). V důsledku toho třídy odvozené od Application musí vždy zaregistrovat obslužnou rutinu DispatcherUnhandledException události ke zpracování neošetřených výjimek.

Platí pro