Связанный:
Если метод вызывает исключение, вызываемое методом ThreadPool.QueueUserWorkItem, где будет выброшено исключение? или его просто съедят?
Я имею в виду, что он никогда не будет брошен в вызывающий поток, верно?
Связанный:
Если метод вызывает исключение, вызываемое методом ThreadPool.QueueUserWorkItem, где будет выброшено исключение? или его просто съедят?
Я имею в виду, что он никогда не будет брошен в вызывающий поток, верно?
НЕТ, исключение никогда не будет распространяться на другой поток. В конечном итоге это приведет к сбою потока и будет поймано средой выполнения. На этом этапе среда выполнения вызывает событие AppDomain.UnhandledException, в котором можно наблюдать исключение.
Подробнее об этом можно узнать здесь.
Исключение приведет к сбою вашего приложения, если оно не будет обнаружено внутри вашего обратного вызова потока (за исключением исключения ThreadAbortException и AppDomainUnloadedException, которые были проглочены). Обратите внимание, что в .NET 1.1 были проглочены все исключения. В .NET 2.0 поведение было изменено.
Я нашел эту ссылку: http://msdn.microsoft.com/en-us/library/ms228965.aspx
Необработанные исключения приведут к отключению приложения в .Net 2.0 или выше. Исключение из кода QUWI не будет перехвачено или передано другому потоку.
См., Например, https://blog.codinghorror.com/improved-unhandled-exception-behavior-in-net-20/