Substitution de la méthode Finalize

Une méthode Finalize joue un rôle de protection vis-à-vis du nettoyage des ressources au cas où votre méthode Dispose ne serait pas appelée. Vous ne devez implémenter une méthode Finalize que pour nettoyer des ressources non managées. Vous ne devez pas implémenter de méthode Finalize pour des objets managés, car le garbage collector nettoie automatiquement les ressources managées. Par défaut, la méthode Object.Finalize n'effectue aucune opération. Pour que le garbage collector effectue des opérations de nettoyage sur votre objet avant qu'il ne récupère la mémoire de l'objet, vous devez substituer cette méthode dans votre classe.

Notes

Vous ne pouvez pas remplacer la méthode Finalize dans le langage de programmation C# ou C++. En langage C#, utilisez la syntaxe du destructeur pour implémenter la méthode Finalize. Dans la version 2.0 de .NET Framework, C++ utilise sa propre syntaxe pour implémenter la méthode Finalize, comme décrit dans Destructors and Finalizers in Visual C++. Dans les versions antérieures, C++ utilisait la syntaxe du destructeur pour la méthode Finalize, comme le fait C#.

La portée de la méthode Object.Finalize est protégée. Vous devez conserver cette portée limitée lorsque vous substituez la méthode dans votre classe. En maintenant une méthode Finalize protégée, vous empêchez les utilisateurs de votre application d'appeler directement la méthode Finalize d'un objet.

La méthode Finalize d'un objet doit libérer toutes les ressources qui sont détenues par l'objet. Elle doit également appeler la méthode Finalize de la classe de base de l'objet. La méthode Finalize d'un objet ne doit pas appeler de méthode sur d'autres objets que ceux de sa classe de base. En effet, les autres objets en cours d'appel pourraient être collectés au même moment que l'objet appelant, comme dans le cas d'un arrêt du Common Language Runtime.

Si vous permettez à des exceptions d'éviter la méthode Finalize, le système part du principe que la méthode est retournée et continue à appeler les méthodes Finalize d'autres objets.

Voir aussi

Référence

Object.Finalize Method

Concepts

Implémentation d'une méthode Dispose
Syntaxe de destructeur en langage C# et C++

Autres ressources

Gestion et levée des exceptions
Notions de base de la gestion des exceptions