Best practices für das handling von IDisposable

Ich habe eine Klassen-Hierarchie, jedes Mitglied kann erstellen IDisposable Objekte.

Habe ich ein List<IDisposable> - Eigenschaft der Basisklasse dieser Hierarchie, zu denen ich hinzufügen keine Einweg-Objekte bei der Erstellung. Die Wurzel Dispose Methode iteriert durch die Liste und ruft Dispose für jedes Element in der Liste und löscht die Liste. In der Anwendung, die ich ausdrücklich nennen das top-Objekt ist Dispose Methode, wodurch die Entsorgung Kaskade durch die Hierarchie.

Dies funktioniert, aber gibt es einen besseren Weg? Bin ich unwissentlich duplizieren einige Funktionen, die schon in den Rahmen?

(Hinweis - die fraglichen Objekte haben eine Lebensdauer, die verhindert nur, wickelte Sie in ein using block oder Entsorgung von Ihnen in der gleichen methodwhere Sie erstellt werden.)

Bearbeiten

Nur zur Klarstellung - ich bin nur halten diese Objekte herum, die beibehalten werden müssen. Einige entsorgt werden, in der gleichen Methode, wo Sie erstellt werden, aber viele sind in einer Weise verwendet werden, dass dies nicht möglich ist.

Warum hast du so viele IDisposables?
Ich bin die Schaffung und Aufrechterhaltung einer Menge von nicht verwalteten Ressourcen - Bilder, usw. -, die aktualisiert werden out-of-band von nicht verwaltetem code.

InformationsquelleAutor 3Dave | 2011-09-04

Schreibe einen Kommentar