Ich habe ein Objekt, das teuer zu erstellen ist, die einige nicht verwaltete Ressourcen verwendet, die explizit freigegeben werden müssen, wenn Sie fertig sind und IDisposable() implementieren. Ich möchte zum Beispiel einen Cache dieser teuren Ressourcen, so dass die Erstellungskosten minimiert werden, aber ich habe Probleme zu wissen, wie ich mit der Entsorgung umgehen soll.Wie IDisposable Objekte verwalten, die zwischengespeichert werden?
Wenn die Methoden, die die Objekte verwenden, für die Beseitigung verantwortlich sind, dann lande ich mit entsorgten Instanzen im Cache, die dann neu erstellt werden müssen und den Punkt im Cache besiegen. Wenn ich die Objekte nicht in den Methoden enthalte, die sie verwenden, werden sie niemals entsorgt. Ich dachte, ich könnte sie entsorgen, wenn sie aus dem Cache entfernt werden, aber dann könnte ich am Ende eine Instanz bereitstellen, die immer noch von einer Methode verwendet wird.
Ist es zulässig, sie einfach außerhalb des Geltungsbereichs zu lassen und vom Garbage Collector gesammelt zu werden und die Ressourcen an diesem Punkt freizugeben? Dies fühlt sich falsch an und ist gegen die Idee, dass sie wegwerfbar sind ...
Ich endete im Grunde mit einer Lösung, die eine Mischung aus dieser und NoBugz Antwort war. Vielen Dank –