2011-03-22 82 views
0

我在我的web應用程序中運行了一個計時器。每次應用程序啓動時,都會創建計時器。問題是應用程序池在空閒時間結束後也會結束計時器。下一個請求會導致應用程序池開始備份並創建新的定時器。計時器,應用程序池超時

無論如何要保持定時器重置?

+0

看到這個更好的方式來實現這樣的事情:http://stackoverflow.com/questions/542804/asp-netbest-way-to-run-scheduled-tasks – 2011-03-22 18:07:53

+0

在啓動時初始化定時器有什麼問題? – 2011-03-22 18:08:08

+0

問題是計時器設置爲每天凌晨3點運行。如果應用程序池在上午2:59:59回收(由於空閒),計時器任務將無法運行。 – user666423 2011-03-22 18:11:58

回答

0

這是一個我看到很多的問題。簡短的答案是否定的,很長的答案是,即使您定期輪詢網站,它最終還是會回收應用程序池。

如果需要做這樣的後臺工作,並在ASP.NET中嵌入,你必須創建一個強大的工作隊列,不會因爲它會發生中斷或崩潰而中斷。無論如何,對於長時間運行的流程來說,這只是一個好設計這可能看起來像很多工作,但簡單的設計可能會讓你走得很遠。

推薦的方法是將該代碼放入單獨的Win32服務中,因爲此類工作負載的性質在基於REST的體系結構中不太合適。

如果你需要的是定期檢查,那麼它可能是罰款只是具有外部腳本輪詢的網站,但它是處理定時器的粗暴的方式。

+0

另一個問題(stackoverflow只會讓我每20分鐘提問一個問題):我在監視應用程序生命週期事件的Web應用程序上有健康狀況監視。每次Web應用程序編譯,啓動和關閉時,它都會記錄一個事件。 minInterval設置爲0. 問題有時會存在重複事件。舉一個例子,剛纔有3個編譯開始和編譯完成事件同時發生。它不應該只記錄每一個? – user666423 2011-03-22 18:18:58

+1

真的是二十分鐘狗的年齡了嗎? ;) – 2011-03-22 18:23:00