做我試圖從一個的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 ......我面臨同樣的問題,狀態始終爲空,可以幫助解釋再多一點?謝謝! –