我使用HttpRuntime.Cache.Insert将数据插入缓存。
我具有“onremove”功能,作为cacheitemremovedcallback-当缓存过期(15分钟后)时,它将释放缓存中的数据并调用“onremove”,将数据再次插入缓存中。
每次我想使用缓存中的数据时,我首先检查数据是否存在:
if (HttpRuntime.Cache[CACHE_DATA_TABLE] == null)
{ // load data into cache again}
如果我检查数据是否在缓存中并且在缓存中,但是一旦我要使用它,它会过期怎么办?
所以当我打电话:
DATADT = (DataTable)HttpRuntime.Cache[CACHE_DATA_TABLE]
HttpRuntime.Cache是否等待直到调用“onremove”并完成将数据加载回高速缓存,然后再提取数据?
最佳答案
您应该改为使用CacheItemUpdateCallback委托(delegate)。
这样,您就可以在要删除该项目之前采取所需的操作。
看到:
MSDN on Cache.Insert Method (String, Object, CacheDependency, DateTime, TimeSpan, CacheItemUpdateCallback)