Anders als bei Destruktoren sind Finalisierungsmethoden nicht deterministisch: Ein Destruktor wird aufgerufen, wenn ein Objekt explizit durch das Programm freigegeben wird.
Hierbei könnte nur exakt einmal aufgerufen werden – am Ende der ersten Closure läuft der Destruktor von und die Variable ist damit nicht mehr verfügbar.
Damit im Destruktor der Klasse die repräsentierte Ressource geschlossen bzw. freigegeben wird, muss die Klasse einen benutzerdefinierten Destruktor haben, in dem die Ressource über einen Systemaufruf explizit geschlossen/freigegeben wird.