0

我正在使用VS2010和ASP.NET 4.我有一个单独的,长时间运行的后台线程在应用程序中运行,它旨在“清理”文件夹中最近最少使用的文件。它使用EventWaitHandle来消除不必要的CPU使用,但在应用程序的整个生命周期中保持运行。在后台线程上删除图像时发生ThreadAbortException。 ASP.NET 4

经过24-40次删除后,应用程序重新启动。这发生在IIS Express和WebDev服务器下,并附有调试器。在后台线程上不会抛出异常,但所有线程都会发生ThreadAbortException,并重新启动应用程序。任何地方都不会有重定向呼叫。

这些文件位于根目录中的'imagecache'文件夹中,而不是任何应该导致应用程序重新启动的文件夹。没有文件夹被创建或删除。

重启似乎发生在某个删除阈值发生后的定时时间间隔。

任何想法为什么发生这种情况,我怎么能阻止它?每10秒重新启动一次,我不能接受:)

回答

0

也许这是一个IIS应用程序池回收?看看回收设置,看看它是否有可能。

另一个选择取决于你如何启动后台线程。如果它来自aspx页面,那么它可能是请求线程超时。如果它来自global.asax,那么这不是一个选项。

+0

它来自global.asax,App_start事件 – 2011-05-30 09:58:27

0

一个asp.net应用程序将服务客户端请求,而不是运行后台任务(尽管有许多这样的工具)。

你可以把线程放到服务中吗?

+0

那么,ASP.NET没有什么好处......但我一直使用后台线程约5年,没有重大问题。 – 2011-05-30 09:59:40