TaskScheduler.UnobservedTaskException Ereignis

Definition

Tritt auf, kurz bevor eine nicht überwachte Ausnahme eines Tasks, bei dem ein Fehler aufgetreten ist, eine Ausnahmeausweitungsrichtlinie auslöst, was standardmäßig den Prozess beenden würde.

public:
 static event EventHandler<System::Threading::Tasks::UnobservedTaskExceptionEventArgs ^> ^ UnobservedTaskException;
public static event EventHandler<System.Threading.Tasks.UnobservedTaskExceptionEventArgs> UnobservedTaskException;
public static event EventHandler<System.Threading.Tasks.UnobservedTaskExceptionEventArgs>? UnobservedTaskException;
[add: System.Security.SecurityCritical]
[remove: System.Security.SecurityCritical]
public static event EventHandler<System.Threading.Tasks.UnobservedTaskExceptionEventArgs> UnobservedTaskException;
member this.UnobservedTaskException : EventHandler<System.Threading.Tasks.UnobservedTaskExceptionEventArgs> 
[<add: System.Security.SecurityCritical>]
[<remove: System.Security.SecurityCritical>]
member this.UnobservedTaskException : EventHandler<System.Threading.Tasks.UnobservedTaskExceptionEventArgs> 
Public Shared Custom Event UnobservedTaskException As EventHandler(Of UnobservedTaskExceptionEventArgs) 

Ereignistyp

EventHandler<UnobservedTaskExceptionEventArgs>
Attribute

Hinweise

Dieses domänenweite Ereignis der Anwendung bietet einen Mechanismus, um zu verhindern, dass eine Ausnahmeeskalationsrichtlinie (die den Prozess standardmäßig beendet) ausgelöst wird.

Um es Entwicklern zu erleichtern, asynchronen Code basierend auf Aufgaben zu schreiben, ändert die .NET Framework 4.5 das Standardausnahmeverhalten für nicht überwachte Ausnahmen. Obwohl nicht beobachte Ausnahmen die UnobservedTaskException Ausnahme weiterhin auslösen, wird der Prozess nicht standardmäßig beendet. Stattdessen wird die Ausnahme von der Runtime behandelt, nachdem das Ereignis ausgelöst wurde, unabhängig davon, ob ein Ereignishandler die Ausnahme beobachtet. Dieses Verhalten kann konfiguriert werden. Ab .NET Framework 4.5 können Sie das <ThrowUnobservedTaskExceptions> Konfigurationselement verwenden, um auf das Verhalten des .NET Framework 4 zurückzusetzen und den Prozess zu beenden:

<configuration>   
   <runtime>   
      <ThrowUnobservedTaskExceptions enabled="true"/>   
   </runtime>   
</configuration>  

Gilt für

Siehe auch