.NET 4 ObjectCache - Можно ли подключиться к событию "Cache Expired"?

У меня есть простой объект, кэшируемый следующим образом:

_myCache.Add(someKey, someObj, policy);

Где _myCache объявлен как ObjectCache (но инжектирован через DI как MemoryCache. Default), someObj - это объект, который я добавляю, а policy - это CacheItemPolicy.

Если у меня есть CacheItemPolicy вот так:

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

Это означает, что срок действия истечет через 1 час. Круто.

Но что произойдет, так это то, что неудачливый первый пользователь после истечения часа будет вынужден ждать удара.

Могу ли я как-то подключиться к "просроченному" событию/делегату и вручную обновить кэш?

Я вижу упоминание CacheEntryChangeMonitor, но не могу найти никакой толковой документации/примеров, как использовать его в моем примере.

PS. Я знаю, что могу использовать CacheItemPriority.NotRemovable и исключить его вручную, но я не могу сделать это в моем текущем примере, потому что кэшированные данные слишком сложны (например, мне нужно будет "аннулировать" в 10 различных местах в моем коде).

Есть идеи?

16
задан RPM1984 5 October 2011 в 04:20
поделиться