0

我正在使用 VS2010 和 ASP.NET 4。我在应用程序中运行了一个长期运行的后台线程,旨在“清理”文件夹中最近最少使用的文件。它使用 EventWaitHandle 来消除不必要的 CPU 使用,但在应用程序的生命周期内保持运行。

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

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

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

知道为什么会发生这种情况以及如何阻止它吗?每 10 秒重新启动一次对我来说是不可接受的:)

4

2 回答 2

0

asp.net 应用程序是为客户端请求提供服务,而不是运行后台任务(尽管有许多允许这样做的组件)。

您可以将线程放入服务中吗?

于 2011-05-30T00:35:10.380 回答
0

也许这是一个 IIS 应用程序池回收?查看回收设置,看看它是否存在。

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

于 2011-05-29T23:44:36.650 回答