Question

Je sais que je peux gérer le UnobservedTaskException pour empêcher toute exception inobservée de mettre fin à mon application lorsque le finaliseur s'exécute sur l'objet.

Cependant, je ne sais pas où ni quand configurer le gestionnaire pour cet événement.Le document XML sur l'événement lui-même dans le TaskScheduler la classe dit :

/// This AppDomain-wide event provides a mechanism to prevent exception
/// escalation policy (which, by default, terminates the process) from triggering.
/// Each handler is passed a <see cref="T:System.Threading.Tasks.UnobservedTaskExceptionEventArgs"/> 
/// instance, which may be used to examine the exception and to mark it as observed.

Cela signifie-t-il que je n'ai besoin que d'un seul gestionnaire dans l'ensemble du domaine d'application ?Et que toutes les exceptions de tâches non observées seront gérées par cela ?

Ou ai-je besoin d'un gestionnaire par assembly/par classe, et seules les exceptions non observées des tâches au sein de cet assembly/classe seront attribuées à ce gestionnaire ?

Était-ce utile?

La solution

Par domaine d'application, c'est tout.C'est un événement statique hors du Task classe que vous devez simplement vous assurer de connecter au moment du démarrage logique de l'application.Donc, pour une application console, connectez-la simplement à Main avant de commencer tout autre travail.Pour les applications ASP.NET, connectez-le simplement à Global.asax Application_Start.Pour un service Windows, dans OnStart.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top