在特定时间到期缓存

时间:2014-02-20 18:12:48

标签: c# caching

我正在使用cache.insert()方法向缓存添加一些数据,它使用绝对过期并在4小时内过期一次。 现在我有一个新要求在特定时间到期缓存:早上7点,上午11点,下午3点,晚上7点。

有办法吗?

当前代码:

ctx.Cache.Insert("stmodel", stModel, null,
                 DateTime.Now.AddHours(4), System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.Default, OnCachedItemRemoved);

提前致谢。

1 个答案:

答案 0 :(得分:2)

ctx.Cache.Insert("stmodel", stModel, null,
             MyClass.getSpecificDateTime(), System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.Default, OnCachedItemRemoved);

 public static DateTime getSpecificDateTime()
    {
        TimeSpan currentTime = DateTime.Now.TimeOfDay;
        DateTime newTime = DateTime.Now;

        if (currentTime.Hours < 7){
            newTime = newTime.Date + new TimeSpan(7, 0, 0);
        }else if (currentTime.Hours < 11){
            newTime = newTime.Date + new TimeSpan(11, 0, 0);
        }else if (currentTime.Hours < 15) {
            newTime = newTime.Date + new TimeSpan(15, 0, 0);
        }else if (currentTime.Hours < 19){
            newTime = newTime.Date + new TimeSpan(19, 0, 0);
        }else {
            newTime = DateTime.Now.AddDays(1);
            newTime = newTime.Date + new TimeSpan(7, 0, 0);
        }   

        return newTime;
    }