Das Dispose/Finalize Muster

Microsoft empfiehlt sowohl Dispose also auch Finalize zu implementieren wenn man mit nicht verwalteten Resourcen (z.B HWND) arbeitet. Wenn der Programmierer es verabsäumt hat die Dispose Methode explizit aufzurufen, dann werden die Resourcen beim Aufruf der Finalize Implementation freigegeben wenn der Garbage Collector das Objekt freigibt.

Die beiden Hauptaufgaben der Dispose Methode sind das Freigeben der nicht verwalteten Resourcen und das Freigeben von Objekten (mit nicht verwalteten Resourcen) die das Objekt besitzt.

Der Aufruf von Dispose beeinflußt nicht die Garbage Collection, ebensowenig beeinflußt die Garbage Collection Dispose. Der Garbage Collector ruft niemals Dispose auf, wenn nicht ein Finalizer diesen Aufruf explizit ausführt.

MSDN: Implementing Finalize and Dispose to Clean Up Unmanaged Resources