. 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()上调用)。

. net运行时是否调用过Thread.Abort() ?

不做任何处理的Catch/throw似乎毫无意义。

这些错误在ASP中很常见。. NET——它意味着结束响应的重定向,例如。ASP。净的回应。重定向()错误

或者它意味着一个工作进程被casinni/iis/aspnet杀死,因为它自己神秘的原因,可能是工作进程回收,等等。

通常不表示编程错误。

在多线程应用程序中调用Thread.Abort()在大多数情况下似乎是一个坏主意,SO上的其他答案比我能更好地说明这一点。

编辑:我想澄清-我知道。net可以杀死线程,但我是想知道它是否专门调用Thread.Abort()或者是否使用其他方法(如ThreadAbortException只被调用)Thread.Abort () .

如果您真的有兴趣了解它是否(以及在哪里)做到了这一点,请参阅. net参考源代码,它非常完整。具体来说,它表明Thread.Abort在这些地方被引用。