为什么我得到“线程被中止”在asp.net?

前端之家收集整理的这篇文章主要介绍了为什么我得到“线程被中止”在asp.net?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我不知道为什么会发生这种情况,我从来没有明确中止线程,所以这是一个惊喜。但我记录异常,我看到:

System.Threading.ThreadAbortException – Thread was being aborted.

它似乎发生在调用System.Threading.WaitHandle.WaitOne。我不知道这个例外是多远。我不认为我的线程曾经终止,因为我捕获日志和吞咽错误

有谁知道我为什么得到这些错误?也许是当我强制终止我的服务器或要求它重新启动?如果不是,那么什么可能是导致他们?

解决方法

如果在Application_Start中生成线程,它们仍然会在应用程序池的AppDomain中执行。如果应用程序空闲了一段时间(意味着没有请求进入)或某些其他条件满足,ASP.NET将回收整个应用程序域。当这种情况发生时,从AppDomain启动的任何线程,包括来自Application_Start的线程,都将被中止。

更多关于应用程序池和回收在这个问题:What exactly is Appdomain recycling

如果你试图在IIS / ASP.NET中运行一个长时间运行的进程,简短的答案通常是“不要”。这就是Windows服务。

猜你在找的asp.Net相关文章