Ho un oggetto che è costoso da creare, che utilizza alcune risorse non gestite che devono essere esplicitamente liberate una volta completate e quindi implementare IDisposable(). Vorrei una cache per esempio di queste costose risorse in modo che il costo di creazione fosse ridotto al minimo, ma ho difficoltà a sapere come gestire lo smaltimento.Come gestire gli oggetti IDisposable che sono memorizzati nella cache?
Se i metodi che utilizzano gli oggetti sono responsabili per lo smaltimento, mi ritrovo con istanze disposte nella cache, che devono quindi essere ricreate, annullando il punto della cache. Se non dispongo gli oggetti nei metodi che li usano, non vengono mai eliminati. Ho pensato che potevo eliminarli quando sono stati estratti dalla cache, ma poi potrei finire per smaltire un'istanza che è ancora utilizzata da un metodo.
È valido lasciarli fuori dal campo di applicazione e essere raccolti dal garbage collector e liberare le risorse in quel punto? Questo sembra sbagliato e contro l'idea che siano monouso ...
Fondamentalmente ho trovato una soluzione ibrida tra questa e la risposta di NoBugz. Grazie –