背景: 我有一個運行在Windows Server 2008上的.NET 4.0 web服務,用C#編寫。 我想在每天運行一次代碼的asp.net web服務中運行一個計時器。我聽說過一些限制(見下文),但我問我是否計劃好以避免一些限制,並將代碼保留在Web服務中,因爲它不是關鍵任務代碼。然而,崩潰是不可接受的。注意:我不是,也不能使用WCF。如何使用System.Threading.Timer與asp.net web服務
計劃:
- 聲明並在 我的web服務的構造函數實例
System.Threading.Timer
(旁邊的註釋行://InitializeComponent();
)。 - 火災計時器每30分鐘。
- 注意:因爲我使用的是
System.Threading.Timer
,所以我不應該按照下面的msdn提示#6運行 保持活動代碼。 - 如果當前時間 在30分鐘內我的數據庫值(所需的時間運行代碼) 然後運行代碼。
問題:
- 我想知道它是多麼可靠的使用上面,如果它會正常運行,讓我們說97%以上的計劃使用
System.Threading.Timer
在asp.net C#代碼的時間? - 此計劃在應用程序池被回收並且IIS服務器重新啓動時工作嗎?
似乎有使用Web服務中的計時器問題與問候到:
- 應用程序池回收
- 線程死亡
- 沒有一個命中網頁長時間的時間
- 內存問題(最好使用windows服務)
個參考文獻:
ASP.NET Site - Firing some code at a specific time
Timer on Website to activate Web Service calls every hour
http://forums.asp.net/t/1079158.aspx/1
http://msdn.microsoft.com/en-us/magazine/cc163854.aspx(參見祕訣6#)
從提示#6 「Timer類,在系統中找到.Threading命名空間,是一個非常有用,但不太知名的c至少對於Web開發人員來說,在.NET Framework中是不可能的。一旦創建,Timer將以可配置的間隔從ThreadPool調用線程上的指定回調。這意味着您可以設置代碼來執行,而無需向ASP發送傳入請求。NET應用程序,是後臺處理的理想情況。您可以在後臺進程中進行索引或發送電子郵件等工作。「
我會先評論(根據標題)和_then_閱讀:請,請不要這樣做! –
現在已經閱讀了,我可以請你參考一下我以前的(但不僅僅是)關於這個主題的答案 - 沒關係,但那是不同的,我說的相同:http://stackoverflow.com/a/5553048/263681最後,我想你誤解了你認爲你理解的數量,讓Timer保持活着。 –