Application.DispatcherUnhandledException Händelse
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
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:
Hantera undantag i bakgrundstråden.
Skicka dessa undantag till huvudtråden för användargränssnittet.
Å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:
Undantaget (Exception).
Från Dispatcher vilken den härstammar (Dispatcher).
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.