3

我有一个线程在我的 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 时

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

4

2 回答 2

1

您的代码中存在潜在的不一致,即DateTime.Today.AddHours(6)不起作用。你应该使用DateTime.Now.AddHours(6)

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

于 2012-07-24T17:22:34.410 回答
1

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

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

于 2012-07-24T17:23:35.433 回答