asp.net可以关闭应用程序创建的线程吗?

时间:2010-12-13 14:39:20

标签: asp.net

将在每个Application_Start事件上启动该线程。

这将是一个应该不断运行的监控线程。

因此,即使应用程序关闭,一旦重新启动,线程也会启动,确保它一直运行。

但是我需要确保在应用程序运行时不会停止/关闭此线程。

所以简单来说,有没有人知道asp.net是否可以在没有实际停止/回收应用程序的情况下关闭这样的线程。

1 个答案:

答案 0 :(得分:4)

作为一个设计问题,你不应该依赖asp.net来运行这样的线程。应用程序回收等小问题可能会给您带来很多麻烦。

相反,创建一个Windows服务来执行该线程。这样你就不用担心了。

<强>更新
我只是想补充一点信息。

IIS能够跨多个线程和进程执行您的应用程序。标准站点安装通常只分配一个进程(aka:web园),它会旋转大约20个线程来处理请求处理。

但是,任何IIS管理员都可以轻松添加更多进程。他们通常在网站可以管理单个进程时执行此操作,因为请求处理时间过长,或者处理程序线程数量不足,或者作为临时措施,如果应用程序有足够的问题,单个线程将管道整个经常过程。

如果你有一个线程在app start上旋转,那么它将为该站点的每个工作进程创建一个。这可能是您或您的继任者的意外行为。

此外,监控应用程序几乎总是与他们监控的应用程序完全分开。其中一个主要原因是,如果被监视的进程死亡,挂起或以其他方式变得无响应,则监视应用程序本身仍需要继续并记录此信息。否则,受监控的进程可以很好地管理监控应用程序本身。

所以,帮自己一个忙,把它移到自己的过程中。在IIS服务器上执行此操作的最佳方法是创建Windows服务并为其提供适当的执行权限以执行所需操作。