Исключения для потоков threadpool

Связанный:


Если метод вызывает исключение, вызываемое методом ThreadPool.QueueUserWorkItem, где будет выброшено исключение? или его просто съедят?

Я имею в виду, что он никогда не будет брошен в вызывающий поток, верно?



person Community    schedule 05.03.2009    source источник
comment
Отвечает ли это на ваш вопрос? Как перехватывать исключения из ThreadPool.QueueUserWorkItem?   -  person Michael Freidgeim    schedule 10.05.2021


Ответы (3)


НЕТ, исключение никогда не будет распространяться на другой поток. В конечном итоге это приведет к сбою потока и будет поймано средой выполнения. На этом этапе среда выполнения вызывает событие AppDomain.UnhandledException, в котором можно наблюдать исключение.

Подробнее об этом можно узнать здесь.

person John Leidegren    schedule 05.03.2009

Исключение приведет к сбою вашего приложения, если оно не будет обнаружено внутри вашего обратного вызова потока (за исключением исключения ThreadAbortException и AppDomainUnloadedException, которые были проглочены). Обратите внимание, что в .NET 1.1 были проглочены все исключения. В .NET 2.0 поведение было изменено.

Я нашел эту ссылку: http://msdn.microsoft.com/en-us/library/ms228965.aspx

person Jakob Christensen    schedule 05.03.2009

Необработанные исключения приведут к отключению приложения в .Net 2.0 или выше. Исключение из кода QUWI не будет перехвачено или передано другому потоку.

См., Например, https://blog.codinghorror.com/improved-unhandled-exception-behavior-in-net-20/

person Brian    schedule 05.03.2009