从其他线程访问HttpRuntime.Cache

时间:2012-07-24 15:40:07

标签: c# caching httpruntime.cache httpruntime

我的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"];时,缓存将变为空(或将删除对象,尚未测试缓存中的多个对象)加上{{ 1}}也是null。当HttpRuntime.Cache.Count大于0

时,这是当然的

哦,它没有任何例外或任何东西

2 个答案:

答案 0 :(得分:1)

您的代码中可能存在不一致的情况 DateTime.Today.AddHours(6)无效。你应该使用 DateTime.Now.AddHours(6)

DateTime.Today是当前开始12:00 AM的日期,如果你的代码在6:00 AM之后运行,显然httpruntime缓存不可用。

答案 1 :(得分:1)

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

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