Adi*_*ter 5 .net c# wpf caching .net-4.0
我正在使用新的System.Runtime.Caching库在我的应用程序中进行缓存,并在App.config中将其定义如下:
<system.runtime.caching>
<memoryCache>
<namedCaches>
<add name="MyCache" cacheMemoryLimitMegabytes="10"
physicalMemoryLimitPercentage="30" pollingInterval="00:00:10" />
</namedCaches>
</memoryCache>
</system.runtime.caching>
Run Code Online (Sandbox Code Playgroud)
然后,从代码我实例化它像这样: _cache = new MemoryCache("MyCache");
并添加如下条目: _cache.Add(resourceName, resource, new CacheItemPolicy());
我使用这个缓存来存储BitmapImage对象,为了确保缓存正常工作,我BitmapImage在缓存中添加了十个对象,每个对象都有一个大约7MB的图像.然后我等了十秒钟才进行轮询并检查缓存中的条目,但它们都在那里.没有一个物体被驱逐.
我在这里做错了吗?我知道正确地从App.config中读取设置.BitmapImage实例本身是否可能很小并且仅引用磁盘上的映像?缓存如何确定对象的大小?
这是因为您要添加到缓存中
new CacheItemPolicy()
Run Code Online (Sandbox Code Playgroud)
这将覆盖您的值并为您提供默认值,即 AbsoluteExpiration 为 31/12/9999 11:59:59 PM +00:00
做10分钟你有2个选择
CacheItemPolicy item = new CacheItemPolicy();
item.SlidingExpiration = new TimeSpan(0, 10, 0);
Run Code Online (Sandbox Code Playgroud)
或者
item.AbsoluteExpiration = DateTime.Now.AddMinutes(10);
Run Code Online (Sandbox Code Playgroud)
如果您选择滑动到期时间,则更新对象后 10 分钟将重置。
| 归档时间: |
|
| 查看次数: |
457 次 |
| 最近记录: |