Freigeben über


Überschreiben der Finalize-Methode

Die Finalize-Methode stellt die Bereinigung von Ressourcen für den Fall sicher, dass die Dispose-Methode nicht aufgerufen wird. Sie sollten eine Finalize-Methode nur für das Bereinigen nicht verwalteter Ressourcen implementieren. Implementieren Sie eine Finalize-Methode nicht für verwaltete Objekte, da der Garbage Collector verwaltete Ressourcen automatisch bereinigt. In der Standardeinstellung erfüllt die Object.Finalize-Methode keine Funktion. Wenn der Garbage Collector Bereinigungsoperationen für das Objekt ausführen soll, bevor der Speicher des Objekts freigegeben wird, müssen Sie diese Methode in der Klasse überschreiben.

Hinweis

Sie können die Finalize-Methode in den Programmiersprachen C# oder C++ nicht überschreiben. Verwenden Sie in C# die Destruktorsyntax, um die Finalize-Methode zu implementieren. In Version 2.0 von .NET Framework wird von C++ eine eigene Syntax für die Implementierung der Finalize-Methode bereitgestellt, die unter Destructors and Finalizers in Visual C++ beschrieben ist. In früheren Versionen wurde in C++ genau wie C# eine Destruktorsyntax für die Finalize-Methode verwendet.

Der Gültigkeitsbereich der Object.Finalize-Methode ist protected. Sie sollten diesen eingeschränkten Gültigkeitsbereich beibehalten, wenn Sie die Methode in der Klasse überschreiben. Wenn die Finalize-Methode geschützt ist, können Benutzer der Anwendung die Finalize-Methode eines Objekts nicht direkt aufrufen.

Die Finalize-Methode eines Objekts sollte alle Ressourcen freigeben, die von dem Objekt verwendet werden. Sie sollte außerdem die Finalize-Methode für die Basisklasse des Objekts aufrufen. Die Finalize-Methode eines Objekts sollte eine Methode ausschließlich für die Basisklasse und nicht für andere Objekte aufrufen. Der Grund hierfür ist, dass das aufrufende Objekt möglicherweise zur gleichen Zeit an die Garbage Collection übergeben wird wie die anderen aufgerufenen Objekte, z. B. wenn eine Common Language Runtime beendet wird.

Wenn eine Ausnahme von der Finalize-Methode übergangen wird, geht das System davon aus, dass die Methode beendet wurde, und ruft weiterhin die Finalize-Methoden anderer Objekte auf.

Siehe auch

Referenz

Object.Finalize Method

Konzepte

Implementieren einer Dispose-Methode
Destruktorsyntax in C# und C++

Weitere Ressourcen

Behandeln und Auslösen von Ausnahmen
Grundlagen der Ausnahmebehandlung