2012-07-24 63 views
3

我有一個線程運行在我的ASP.Net後面。在這個線程我把數據在這樣的高速緩存:從其他線程訪問HttpRuntime.Cache

HttpRuntime.Cache.Insert("test", "test", null, DateTime.Today.AddHours(6), Cache.NoSlidingExpiration); 

在其他線程(網頁),我第一次檢查,如果緩存中包含的所有數據,然後嘗試從緩存中獲取對象,像這樣:

if (HttpRuntime.Cache.Count > 0) { 
      var test = (string)HttpRuntime.Cache["test"]; 
} 

編輯:當我試圖做var test = (string)HttpRuntime.Cache["test"];緩存將走空每次(或將要刪除的對象,沒有測試緩存多個對象),再加上var test也爲空。這是ofcourse當HttpRuntime.Cache.Count比0

哦更大,它使沒有例外或任何

+0

你能澄清你是說在你的if語句'Cache.Count> 0'中,但有時在'var test =(string)HttpRuntime.Cache [「test」];'它是空的? – 2012-07-24 15:59:55

+0

每次當我試圖做'var test =(string)HttpRuntime.Cache [「test」];'緩存將變空(或將刪除對象,還沒有測試過)加var test '也是空的。當'HttpRuntime.Cache.Count'大於0時,這是當然的 – 2012-07-24 16:57:59

回答

1

。在你的代碼中潛在的不一致是DateTime.Today.AddHours(6)即會不行。你應該使用DateTime.Now.AddHours(6)

DateTime.Today是當天開始​​,如果你的代碼運行後6:00 AM明顯的httpRuntime緩存不可用。