C# 获取缓存以每半小时更新一次一小时的变量

C# 获取缓存以每半小时更新一次一小时的变量,c#,.net,caching,C#,.net,Caching,我缓存了一个.net应用程序变量。我想做的是让缓存每半小时在1、1.30、2、2.30等时间循环一次变量。我设置了onRemoveCallback函数,并且一切正常,我真正的问题是生成正确绝对过期值的最佳方法是什么 DateTime time_to_expire = DateTime.Now; if (time_to_expire.Minute < 29) { time_to_expire = new Date

我缓存了一个.net应用程序变量。我想做的是让缓存每半小时在1、1.30、2、2.30等时间循环一次变量。我设置了onRemoveCallback函数,并且一切正常,我真正的问题是生成正确绝对过期值的最佳方法是什么

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);
            }
DateTime time\u to\u expire=DateTime.Now;
如果(从时间到过期。分钟<29)
{
time_to_expire=新的日期时间(DateTime.Now.Year,DateTime.Now.Month,DateTime.Now.Day,DateTime.Now.Hour,30,0);
}
其他的
{
time_to_expire=新的日期时间(DateTime.Now.Year、DateTime.Now.Month、DateTime.Now.Day、DateTime.Now.Hour+1,0,0);
}
我之所以将time_to_expire值测试为29,是因为我担心边界情况,我不希望变量在半小时内“变为空白”!关于如何做得更好的想法

谢谢

我不知道它是否“更好”,但我倾向于这样做:

        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);

如果on-remove回调正在工作,则变量不会变为空。更糟糕的情况应该是,如果遇到边缘情况,回调函数会再次被调用。午夜怎么样?这就是滚动日价值的问题。是的,我明白了,先加上半个小时,就可以解决午夜的问题,谢谢,我想这会管用的。