jueves, mayo 03, 2007

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();
}
}

Etiquetas: ,

0 Comentarios:

Publicar un comentario

Suscribirse a Comentarios de la entrada [Atom]

<< Página Principal