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