System.Runtime.Caching.MemoryCache странное поведение? - PullRequest
2 голосов
/ 20 июля 2011

Задайте этот вопрос также на форумах MSDN (http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/0a666d5e-9bda-47bd-8dd3-98d32eb5fe60/?prof=required),, подумал, что я получу мнение людей здесь:

Вот вывод моего непосредственного окна:

(EmployeeCache as MemoryCache).Add("test", new Object(),DateTimeOffset.Now.AddMinutes(10));
true
(EmployeeCache as  MemoryCache).GetCount()
0
(EmployeeCache as  MemoryCache)
{<namespace>.CustomCache}
[<namespace>.CustomCache]: {[<namespace>.CustomCache}
base {System.Runtime.Caching.ObjectCache}: {<namespace>.CustomCache}
CacheMemoryLimit: 1887436800
DefaultCacheCapabilities: InMemoryProvider | CacheEntryChangeMonitors | AbsoluteExpirations |   SlidingExpirations | CacheEntryUpdateCallback | CacheEntryRemovedCallback
Name: "keyname"
PhysicalMemoryLimit: 99
PollingInterval: {00:02:00}

При каких условиях добавление в MemoryCache вернет true, но объект не будет кэширован? (Вызов GetCount и следующий за ним выполняется сразу после добавления в кэш)

1 Ответ

0 голосов
/ 24 декабря 2011

Самый простой способ попасть в эту ситуацию - это Add на MemoryCache объекте, для которого был вызван Dispose. Вы можете проверить это с помощью отладчика Visual Studio, чтобы увидеть приватное свойство _disposed объекта MemoryCache. Наведите указатель мыши на переменную, которая ссылается на кэш, используйте быстрое наблюдение или используйте непосредственное окно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...