在c#中追踪一个无法捕获的线程中止

时间:2013-05-03 20:44:55

标签: c# multithreading clr abort hresult

我在C#中通用try catch块中获取ThreadAbortException(捕获所有异常) - 但是,我无法对其进行跟踪,表明它可能在托管代码之外被杀死。

我得到的HRESULT代码为-2146233040,解码时为:

FACILITY_URT 19 - .NET CLR

代码0x1530 - COR_E_THREADABORTED

抛出一个线程导致它中止。不能捕捉。

如何追踪这头野兽的想法?

1 个答案:

答案 0 :(得分:1)

这是由致电Thread.Abort()而引起ThreadAbortException

引起的

请注意,即使托管代码抛出了ThreadAbortException,也无法阻止If you look at this link 传播。你可以抓住它,但你不能忽视它。

{{3}}并搜索COR_E_THREADABORTED您会看到它用于ThreadAbortException

可能有办法找到抛出此异常的位置:

如果可以在Visual Studio调试器下运行,请转到菜单项Debug | Exceptions,然后勾选“托管调试助手”旁边的抛出列中的复选框。 (如果愿意,可以勾选抛出列中的所有项目。)然后在调试器下运行程序,看看是否弹出任何内容。