Domanda

So che posso gestire il UnobservedTaskException Per evitare che eventuali eccezioni non osservate terminano la mia applicazione quando il Finalizzatore viene eseguito sull'oggetto.

Tuttavia, non sono sicuro di dove o quando dovrei impostare il gestore per questo evento. Il documento XML sull'evento stesso all'interno del TaskScheduler Classe dice:

/// 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.

Questo significa che ho bisogno di un solo gestore nell'intero appdomain? E che tutte le eccezioni di attività non osservate saranno gestite da questo?

O ho bisogno di un gestore per assemblaggio / per classe e solo eccezioni non osservate dalle attività all'interno di quell'assemblaggio / classe andranno a quel gestore?

È stato utile?

Soluzione

Per dominio di app è tutto. È un evento statico al largo del Task Classe che dovresti solo assicurarti di agganciarsi al tempo di avvio logico dell'applicazione. Quindi per un'app per console, basta agganciarlo in main prima di iniziare qualsiasi altro lavoro. Per le app ASP.NET, basta agganciarlo in Global.asax Application_Start. Per un servizio Windows, in Onstart.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top