C # 4.0 MemoryCache - как удалить зависимые записи кэша при изменении их зависимостей

Я пытаюсь удалить записи из 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 вызывается должным образом при изменении отслеживаемого ключа, однако переданный ему экземпляр «состояния» всегда имеет значение NULL, что означает, что я ничего не знаю о ключе кеша, зависимость которого изменилась, и поэтому не может выполнить запланированное выселение.

Я что-то здесь пропустил, я все делаю неправильно?

5
задан casperOne 12 October 2011 в 12:02
поделиться