. net运行时是否调用过Thread.Abort() ?
本文关键字:Abort Thread 运行时 是否 调用 net | 更新日期: 2023-09-27 17:54:04
我继承了一些服务代码,我正在试图追踪服务崩溃的问题。我在很多地方发现了以下代码:
catch (ThreadAbortException)
{
throw;
}
然而,我在项目(或相关项目)的任何部分都找不到对Thread.Abort()
或Thread.Kill()
的任何调用。
Thread.Abort()
是否被。net运行时隐式调用,或者该异常是否存在仅用于捕获开发人员所做的调用?我试图缩小我的错误途径,我不是很有经验的线程在c#。我试图确定如果Thread.Abort()
在我的代码库中从未实际调用,我所显示的捕获块是否曾经实际命中。
谢谢!
编辑:我想澄清-我知道。net可以杀死线程,但我想知道它是否专门调用Thread.Abort()
或是否使用其他方法(因为ThreadAbortException
仅在Thread.Abort()
上调用)。
不做任何处理的Catch/throw似乎毫无意义。
这些错误在ASP中很常见。. NET——它意味着结束响应的重定向,例如。ASP。净的回应。重定向()错误
或者它意味着一个工作进程被casinni/iis/aspnet杀死,因为它自己神秘的原因,可能是工作进程回收,等等。
通常不表示编程错误。
在多线程应用程序中调用Thread.Abort()在大多数情况下似乎是一个坏主意,SO上的其他答案比我能更好地说明这一点。
编辑:我想澄清-我知道。net可以杀死线程,但我是想知道它是否专门调用Thread.Abort()或者是否使用其他方法(如ThreadAbortException只被调用)Thread.Abort () .
如果您真的有兴趣了解它是否(以及在哪里)做到了这一点,请参阅. net参考源代码,它非常完整。具体来说,它表明Thread.Abort
在这些地方被引用。