我有一个简单的对象被缓存,如下所示:
_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(使用前将#替换为@)