线程池线程的异常

时间:2009-03-05 10:33:53

标签: c# multithreading threadpool

相关:


如果方法抛出ThreadPool.QueueUserWorkItem方法调用的异常,那么抛出异常的位置是什么?还是会被吃掉?

我的意思是它永远不会被抛出调用线程吗?


3 个答案:

答案 0 :(得分:4)

不,异常永远不会传播到另一个线程。它最终会崩溃线程,并被运行时捕获。此时,运行时会引发可以观察到异常的AppDomain.UnhandledException事件。

您可以阅读有关此here的更多信息。

答案 1 :(得分:4)

如果未在线程回调中捕获异常将导致应用程序崩溃(除了吞下的ThreadAbortException和AppDomainUnloadedException)。请注意,在.NET 1.1中,吞下了所有异常。行为在.NET 2.0中已更改。

我找到了这个链接:http://msdn.microsoft.com/en-us/library/ms228965.aspx

答案 2 :(得分:1)

未处理的异常会导致.Net 2.0或更高版本的应用程序崩溃。 QUWI代码的异常不会被捕获或转移到另一个线程。

参见例如 https://blog.codinghorror.com/improved-unhandled-exception-behavior-in-net-20/