从其他线程访问HttpRuntime.Cache



我有一个线程在ASP.Net后面运行。在这个线程中,我把数据放在缓存中,如下所示:

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也为空。当HttpRuntime.Cache.Count大于0 时,当然是这样

哦,它没有给出任何异常或任何东西

DateTime.Tays.AddHours(6)的代码中可能存在不一致,这将不起作用。您应该使用DateTime.Now.AddHours(6)

DateTime.今天是12:00 AM开始的当天,如果代码在6:00 AM之后运行,那么httpruntime缓存显然不可用。

.NET中的Cache对象是线程安全的,因此不需要通过线程获取数据。您可以查看这篇文章:http://msdn.microsoft.com/en-us/library/system.web.caching.cache.aspx.

调整您的持续时间:DateTime.Now.AddHours(6)

相关内容

  • 没有找到相关文章

最新更新