Wie gesagt, der gc dürfte gar nicht das Problem sein, da dieser nur aufräumt (vergessene Close auch schließt).

Ein expliziter Close muss die Ressource Datei freigeben!

Vielleicht gibts ja eine Ausnahme, die dein Programm nicht zum Close der Datei führt, so dass eben der Delete fehlschlägt.