HttpRuntime.Cache的cacheitemremovedcallback线程安全吗?
我使用 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”并完成将数据加载回缓存,然后再提取数据?
i use HttpRuntime.Cache.Insert to insert data into cache.
i have the function 'onremove' as the cacheitemremovedcallback - when the cache expires (after 15 minutes) it releases data in cache and calls 'onremove' that insert the data again to the cache.
everytime i want to use the data in the cache i check that the data is there first:
if (HttpRuntime.Cache[CACHE_DATA_TABLE] == null)
{ // load data into cache again}
what happens if i check that the data is in the cache and it is there, but as soon as i want to use it it expires?
so when i call:
DATADT = (DataTable)HttpRuntime.Cache[CACHE_DATA_TABLE]
Does the HttpRuntime.Cache waits untill 'onremove' is called and finish loading the data back into cache before it extract the data ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您应该使用 CacheItemUpdateCallback 委托。
这使您可以在项目即将被删除之前执行所需的操作。
看:
MSDN 上的 Cache.Insert 方法(字符串、对象、CacheDependency、DateTime、TimeSpan、CacheItemUpdateCallback)
You should use a CacheItemUpdateCallback delegate instead.
This lets you take the desired action before the item is about to be removed.
See:
MSDN on Cache.Insert Method (String, Object, CacheDependency, DateTime, TimeSpan, CacheItemUpdateCallback)