我正在嘗試製作緩存其輸出內容的Web服務。Web服務 - 緩存更新
我已經添加了[WebMethod(CacheDuration=1800)]
,但問題是我希望Web服務在30分鐘後自動更新緩存,而無需任何請求。
我使用.net和C#。 Web服務實際上是一個獲取xml數據的代理,將其解析併發送給客戶端。
Web服務如何在一段時間(本身)後更新緩存?
我正在嘗試製作緩存其輸出內容的Web服務。Web服務 - 緩存更新
我已經添加了[WebMethod(CacheDuration=1800)]
,但問題是我希望Web服務在30分鐘後自動更新緩存,而無需任何請求。
我使用.net和C#。 Web服務實際上是一個獲取xml數據的代理,將其解析併發送給客戶端。
Web服務如何在一段時間(本身)後更新緩存?
您可以使用timer classes之一來刷新緩存結果集 - 將其保存在類的字段中。
這樣你可以管理緩存而不是IIS。
到定時器的替代方法是使用Cache
類 - 使用CacheItemUpdateCallback
自動刷新緩存一旦到期(仍留有一個小窗口,用戶可以調用該方法爲它刷新 - 可能使用緩存項目)。
根據你的鏈接,我認爲你不能在web中使用「System.Windows.Forms.Timer」。我嘗試了「System.Timers.Timer」類並使用了Elapsed事件,但它沒有擊中處理程序。我使用了下面提到的代碼。 'System.Timers.Timer t = new System.Timers.Timer(); t.Enabled = true; t.Interval = 5000; t.Elapsed + =新System.Timers.ElapsedEventHandler(t_Elapsed);無效t_Elapsed(對象發件人,System.Timers.ElapsedEventArgs E) { }' – Pankaj 2012-03-06 16:50:59
我的第一個想法是使用一個新的線程休眠一段時間,然後開始執行(更新緩存),然後再次睡眠。儘管聽起來很簡單,但它卻是一個噩夢。在更新間隔期間共享的所有資源都必須鎖定,以便更新它們。對此有何建議? – user1226051 2012-03-06 17:44:31
恩,我不確定,但我認爲你需要t.start()... – user1226051 2012-03-06 17:58:57
您有問題要問? – Oded 2012-03-06 16:20:26
是的。 Web服務如何在一段時間後自行更新其緩存? – user1226051 2012-03-06 16:24:31
爲什麼要在這種情況下緩存30分鐘?緩存一天。 – Oded 2012-03-06 16:26:39