estoy usando la nueva biblioteca System.Runtime.Caching para almacenar en caché en mi solicitud, y se define como sigue en el App.config:System.Runtime.Caching no libera BitmapImage objetos
<system.runtime.caching>
<memoryCache>
<namedCaches>
<add name="MyCache" cacheMemoryLimitMegabytes="10"
physicalMemoryLimitPercentage="30" pollingInterval="00:00:10" />
</namedCaches>
</memoryCache>
</system.runtime.caching>
Luego, a partir del código que crear una instancia de esta manera: _cache = new MemoryCache("MyCache");
y añadir entradas como esta: _cache.Add(resourceName, resource, new CacheItemPolicy());
puedo utilizar esta caché para almacenar BitmapImage
objetos, y para asegurarse de que la memoria caché funciona correctamente, he añadido diez BitmapImage
objetos a la memoria caché, cada uno con una imagen de aproximadamente 7 MB. Luego esperé diez segundos para que se efectuara el sondeo y revisé las entradas en el caché, pero estaban todas allí. Ni un solo objeto ha sido desalojado.
¿Estoy haciendo algo mal aquí? Sé que la configuración se lee correctamente desde App.config. ¿Es posible que las instancias BitmapImage
sean pequeñas y solo hagan referencia a la imagen en el disco? ¿Y cómo determina el caché cuál es el tamaño del objeto?
He probado esto con 'char []', y los elementos fueron desalojados aunque utilicé 'new CacheItemPolicy()'. De cualquier manera, para agregar un elemento a la caché, tengo que proporcionar un parámetro 'CacheItemPolicy'. ¿Qué valor debo pasar para obtener el comportamiento solicitado? –
Actualizado mi respuesta –
Esto todavía no me da el comportamiento solicitado. No quiero establecer explícitamente el momento en que los artículos caducarán; quiero que caduquen si se excedió el límite de memoria, como se define en 'app.config'. Además, estoy bastante seguro de que te equivocas sobre los artículos que expiran al 31/12/9999 11:59:59 PM +00: 00, porque como dije en mi comentario anterior, conseguí que los artículos caduquen incluso cuando los agregó con la política 'new CacheItemPolicy()'. –