Cache de objetos con Dispose
En el caso en que sea necesario poner en Cache objetos que tienen definido Dispose, hay que tener en cuenta que cuando el Cache remueve el objeto NO llama al Dispose, con lo que se pueden desperdiciar recursos.
La solución es utilizar el callback del objeto Cache e implementar la llamada a mano.
// add the item to the cache, note the callback
HttpRuntime.Cache.Add("myKey", myClass, null, DateTime.Now.AddSeconds(5),
Cache.NoSlidingExpiration, CacheItemPriority.Default,
new CacheItemRemovedCallback( OnRemoved ) );
// callback function
void OnRemoved( string key, object value, CacheItemRemovedReason reason ) {
IDisposable disposable = value as IDisposable;
if (disposable != null) {
disposable.Dispose();
}
}

0 Comentarios:
Publicar un comentario
Suscribirse a Comentarios de la entrada [Atom]
<< Página Principal