Application.DispatcherUnhandledException Händelse

Definition

Inträffar när ett undantag utlöses av ett program men inte hanteras.

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 

Händelsetyp

Exempel

I följande exempel visas hur du bearbetar ohanterade undantag genom att hantera händelsen 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

Kommentarer

Som standard fångar Windows Presentation Foundation ohanterade undantag, meddelar användare av undantaget från en dialogruta (från vilken de kan rapportera undantaget) och stänger automatiskt av ett program.

Men om ett program behöver utföra anpassad ohanterad undantagsbearbetning från en central plats bör du hantera DispatcherUnhandledException.

DispatcherUnhandledException genereras av ett Application för varje undantag som inte hanteras av kod som körs i huvudgränssnittstråden.

Om ett undantag inte hanteras på antingen en gränssnittstråd i bakgrunden (en tråd med en egen Dispatcher) eller en bakgrundsarbetstråd (en tråd utan en Dispatcher) vidarebefordras inte undantaget till huvudtråden för användargränssnittet. Därför DispatcherUnhandledException höjs inte. Under dessa omständigheter måste du skriva kod för att göra följande:

  1. Hantera undantag i bakgrundstråden.

  2. Skicka dessa undantag till huvudtråden för användargränssnittet.

  3. Återväxa dem på huvudtråden för användargränssnittet utan att hantera dem så att de kan DispatcherUnhandledException höjas.

Mer information finns i översikten över trådningsmodell .

Händelsehanteraren DispatcherUnhandledException skickas ett DispatcherUnhandledExceptionEventArgs argument som innehåller kontextuell information om undantaget, inklusive:

Du kan använda den här informationen för att avgöra om ett undantag kan återställas eller inte. Ett återställningsbart undantag kan till exempel vara ett FileNotFoundException, medan ett oåterkalleligt undantag kan vara ett StackOverflowException, till exempel.

När du bearbetar ett ohanterat undantag från DispatcherUnhandledException, och du inte vill att WPF ska fortsätta bearbeta det, måste du ange egenskapen Handled till true.

Till skillnad från andra händelser som Application genererar DispatcherUnhandledException har inte en matchande skyddad virtuell implementering (OnDispatcherUnhandledException). Därför måste klasser som härleds från Application alltid registrera en händelsehanterare med DispatcherUnhandledException för att bearbeta ohanterade undantag.

Gäller för