.NET 4 ObjectCache - 我们可以挂钩“缓存过期”事件吗?

2024-02-27

我有一个简单的对象被缓存,如下所示:

_myCache.Add(someKey, someObj, policy);

Where _myCache被声明为ObjectCache(但通过 DI 注入MemoryCache.Default), someObj是我要添加的对象,并且policy is a CacheItemPolicy.

如果我有一个CacheItemPolicy像这样:

var policy = new CacheItemPolicy 
{ 
   Priority = CacheItemPriority.Default, 
   SlidingExpiration = TimeSpan.FromHours(1)
};

这意味着它将在 1 小时后过期。凉爽的。

但将会发生的情况是,不幸的第一个用户在一小时后将不得不等待点击。

有什么方法可以挂钩“过期”事件/委托并手动刷新缓存吗?

我看到有提到CacheEntryChangeMonitor但在我的示例中找不到任何有意义的 doco/示例来说明如何使用它。

附言。我知道我可以使用CacheItemPriority.NotRemovable并手动使其过期,但在我当前的示例中我不能这样做,因为缓存的数据有点太复杂(例如,我需要在代码中的 10 个不同位置“无效”)。

有任何想法吗?


上面有一个属性CacheItemPolicy called RemovedCallback其类型为:CacheEntryRemovedCallback。不知道为什么他们没有走标准的活动路线,但这应该可以满足您的需要。

http://msdn.microsoft.com/en-us/library/system.runtime.caching.cacheitempolicy.removedcallback.aspx http://msdn.microsoft.com/en-us/library/system.runtime.caching.cacheitempolicy.removedcallback.aspx

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.NET 4 ObjectCache - 我们可以挂钩“缓存过期”事件吗? 的相关文章

随机推荐