我使用MemoryCache类创建了一个缓存.我添加了一些项目,但是当我需要重新加载缓存时,我想首先清除它.最快的方法是什么?我应该遍历所有项目并一次删除一个项目还是有更好的方法?
我使用a System.Runtime.Caching.MemoryCache来保存永不过期的物品.但是,有时我需要能够清除整个缓存.我怎么做?
我在这里问了一个类似的问题,我是否可以枚举缓存,但这是一个坏主意,因为它需要在枚举期间进行同步.
我尝试过使用.Trim(100)但根本不起作用.
我已经尝试通过Linq获取所有密钥的列表,但后来我回到了我开始的地方,因为一个接一个地逐出项目很容易导致竞争条件.
我想存储所有的密钥,然后.Remove(key)为每个密钥发出一个,但是那里也有一个隐含的竞争条件,所以我需要锁定对密钥列表的访问,然后事情再次变得混乱.
然后我认为我应该可以调用.Dispose()整个缓存,但我不确定这是否是最佳方法,因为它的实现方式.
使用ChangeMonitors不是我的设计的选项,并且对于这样一个微不足道的要求是不必要的.
那么,我该如何彻底清除缓存呢?
我听说.NET 4有一个新的缓存API.
好的,所以好的旧的System.Web.Caching.Cache(顺便说一下,仍然在.NET 4中)能够设置所谓的CacheDependency对象来确定缓存的项目是否过期.
还可以通过从中派生自定义子类来指定用于确定缓存项目是否仍然可用的自定义逻辑CacheDependency.
我很好奇,有没有办法在新的API中提供这样的逻辑?
要简洁.是否可以在.Net Core Web应用程序中列出内存缓存中的所有注册密钥?
我在IMemoryCache界面中找不到任何东西.
c# ×4
caching ×4
.net-4.0 ×3
.net ×1
asp.net ×1
asp.net-core ×1
asp.net-mvc ×1
memory ×1
memorycache ×1