2012-12-07 49 views
0

我有一個.net應用程序變量緩存。我想要做的事情得到的緩存回收變量每小時,每1小時,1:30,2,2.30等半小時我有onRemoveCallback功能設置,一切正常,我真正的問題是什麼是最好的方式來產生正確的absoluteExpiration值?獲取緩存以便在每小時的每半小時更新變量

DateTime time_to_expire = DateTime.Now; 
      if (time_to_expire.Minute < 29) 
      { 
       time_to_expire = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, DateTime.Now.Hour, 30, 0); 
      } 
      else 
      { 
       time_to_expire = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, DateTime.Now.Hour + 1, 0, 0); 
      } 

我測試time_to_expire值29的是,我很擔心邊界情況,我不希望變量「一片空白」了一個半小時的時間的原因吧!關於如何更好地做到這一點的想法?

感謝

+0

如果您對刪除回調的工作,該變量不會去空白。更糟糕的情況應該是,如果您碰到邊緣情況,則會再次調用回調函數。 – Rozwel

回答

0

不知道它是什麼「好」,但我會傾向於做這樣的事情:

 DateTime time_to_expire = DateTime.Now.AddMinutes(30); 
     time_to_expire = new DateTime(time_to_expire.Year, time_to_expire.Month, time_to_expire.Day, time_to_expire.Hour, time_to_expire.Minute >= 30 ? 30 : 0, 0); 
+0

午夜怎麼樣?這是滾動日價值的問題。 – flavour404

+0

是的,我明白了,首先添加半個小時的時間,它會照顧午夜問題,謝謝我認爲這將起作用。 – flavour404