是HitepRuntime.Cache线程安全的cacheitemremovedcallback?

时间:2010-11-10 08:38:48

标签: .net thread-safety httpruntime.cache

我使用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'被调用并在提取数据之前将数据重新加载到缓存中?

1 个答案:

答案 0 :(得分:1)

您应该使用CacheItemUpdateCallback代表。

这使您可以在项目即将被移除之前采取所需的操作

请参阅: MSDN on Cache.Insert Method (String, Object, CacheDependency, DateTime, TimeSpan, CacheItemUpdateCallback)