Обработка ненаблюдаемых исключений задач - PullRequest
1 голос
/ 24 февраля 2012

Я знаю, что могу обработать UnobservedTaskException, чтобы не допустить прекращения моим приложением любых ненаблюдаемых исключений при запуске финализатора на объекте.

Однако я не уверен, где или когда мне следует настроитьобработчик для этого события.Документ XML о самом событии в классе TaskScheduler гласит:

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

Означает ли это, что мне нужен только один обработчик во всем AppDomain?И что все ненаблюдаемые исключения задач будут обрабатываться этим?

Или мне нужен обработчик для каждой сборки / для класса, и только ненаблюдаемые исключения из задач в этой сборке / классе будут идти в этот обработчик?

1 Ответ

2 голосов
/ 24 февраля 2012

Для каждого домена приложения это все. Это статическое событие вне класса Task, которое вы должны просто убедиться, что вы подключаетесь во время логического запуска приложения. Так что для консольного приложения просто подключите его к Main, прежде чем начинать любую другую работу. Для приложений ASP.NET просто подключите его в Global.asax Application_Start. Для службы Windows в OnStart.

...