Tengo un objeto que es costoso de crear, que utiliza algunos recursos no administrados que deben liberarse explícitamente cuando se hace con y para implementar IDisposable(). Me gustaría un caché, por ejemplo, de estos recursos caros para que el costo de creación se reduzca al mínimo, pero tengo problemas para saber cómo hacer frente a la eliminación.¿Cómo administrar objetos IDisposable que se almacenan en caché?
Si los métodos que usan los objetos son responsables de la eliminación, entonces termino con instancias eliminadas en la memoria caché, que luego tienen que ser recreadas, derrotando el punto de la memoria caché. Si no dispongo los objetos en los métodos que los utilizan, nunca serán eliminados. Pensé que podría deshacerme de ellos cuando salgan de la memoria caché, pero luego podría terminar desechando una instancia que todavía está siendo utilizada por un método.
¿Es válido simplemente dejarlos salir del alcance y ser recogidos por el recolector de basura y liberar los recursos en ese punto? Esto se siente mal y en contra de la idea de que sean desechables ...
básicamente que terminó con una solución que era un híbrido de esto y respuesta nobugz. Gracias –