做我试图从一个的MemoryCache逐出条目更改时其所依赖的其他条目进行。这是正在建立由从属密钥创建缓存条目改变监视的依赖关系:C#4.0的MemoryCache - 如何驱逐依赖缓存记录更改时它们的依赖
public bool AddToCache(string key, object dataItem,
DateTimeOffset absoluteExpiration, IEnumerable<string> dependencyKeys)
{
bool result = false;
if (!string.IsNullOrWhiteSpace(key) && dataItem != null)
{
CacheItemPolicy policy = new CacheItemPolicy {
AbsoluteExpiration = absoluteExpiration
};
if (masterKeys != null && masterKeys.Any())
{
policy.ChangeMonitors.Add(
this.provider.Cache.
CreateCacheEntryChangeMonitor(dependencyKeys));
foreach (ChangeMonitor monitor in policy.ChangeMonitors)
{
monitor.NotifyOnChanged(this.OnDependencyChanged);
}
}
result = this.provider.Cache.Add(key, dataItem, policy);
}
return result;
}
的OnChangedCallBack
方法是这样的:
private void OnDependencyChanged(object state)
{
// what do I do here as "state" is always null?
}
项目被添加到高速缓存按预期运行,并该OnDependencyChanged
方法被调用当一个变化被监视键进行预期,但传递给它的“状态”实例总是空,这意味着我一无所知缓存键,其相关性发生了变化,因此无法执行计划的驱逐。
我错过了一些东西在这里,我要对所有这些错误的方法?
嗨Jibberish,您标记正确的答案follwoing,但我仍然无法理解为什么答案是正确的,我甚至不能发现其中OnChangedCacheEntry ......我面临同样的问题,状态始终为空,可以帮助解释再多一点?谢谢! –