我使用a System.Runtime.Caching.MemoryCache来保存永不过期的物品.但是,有时我需要能够清除整个缓存.我怎么做?
我在这里问了一个类似的问题,我是否可以枚举缓存,但这是一个坏主意,因为它需要在枚举期间进行同步.
我尝试过使用.Trim(100)但根本不起作用.
我已经尝试通过Linq获取所有密钥的列表,但后来我回到了我开始的地方,因为一个接一个地逐出项目很容易导致竞争条件.
我想存储所有的密钥,然后.Remove(key)为每个密钥发出一个,但是那里也有一个隐含的竞争条件,所以我需要锁定对密钥列表的访问,然后事情再次变得混乱.
然后我认为我应该可以调用.Dispose()整个缓存,但我不确定这是否是最佳方法,因为它的实现方式.
使用ChangeMonitors不是我的设计的选项,并且对于这样一个微不足道的要求是不必要的.
那么,我该如何彻底清除缓存呢?