有几个答案解释了Response.End() 被认为有害吗? 但是我还没有找到明确的确认,在 Response.End ThreadAbortException 之后 ASP.Net 线程会发生什么。
Eric Lippert 在对 Response.End () 的评论中没有中止当前线程 指出“线程只是要回到线程池中。”但他承认,他在线程模型上工作的时间超过10年。
在 CodeProject 文章Exploration of methods to handle ThreadAbortException with Response.Redirect 中被告知“当前线程(正在处理当前请求)应该被终止(并返回线程池)”,但后来它是提到 ASP.NET 工作进程可能面临线程饥饿。
有人可以提供任何参考来澄清线程吗
- 被送回游泳池,或
- 终止并从池中删除?
有类似的(不是 Asp.net 特定的)未回答的问题Aborting a thread-pool thread
顺便说一句,普遍认为 ThreadAbortException 可以被应用程序代码捕获,但在 catch 块的末尾重新抛出(来自MSDN Thread.Abort Method)。然而它是不正确的(至少它并不总是正确的)。我在我们的应用程序中找到了代码,在 Response.End 捕获并“吃掉”ThreadAbortException 之后,处理继续进行,没有任何重新抛出。
.