Disposer

Définition - Que signifie Dispose?

Dans le contexte de C #, dispose est une méthode objet appelée pour exécuter le code requis pour le nettoyage de la mémoire et libérer et réinitialiser les ressources non gérées, telles que les descripteurs de fichiers et les connexions à la base de données. Dispose améliore les performances et optimise la mémoire en libérant des objets ingérables et des ressources rares, comme les poignées GDI (Graphics Device Interface) utilisées dans les applications avec un espace Windows limité.

La méthode Dispose, fournie par l'interface IDisposable, implémente les appels Dispose. Le modèle Dispose est conçu pour un nettoyage rapide et prévisible, la prévention des fuites de mémoire temporaires et l'élimination des ressources.

Definir Tech explique Dispose

Le framework .NET facilite le garbage collection (GC), gère la mémoire et les ressources d'objets et récupère les références de mémoire d'objets non valides en appelant Finalize - une méthode non déterministe. La méthode Dispose contrôle la durée de vie des instances de mémoire objet et fournit un contrôle de nettoyage de mémoire explicite, par rapport au nettoyage de mémoire implicite de Finalize. Dispose peut être appelé même lorsque d'autres instances d'objet mémoire existent, tandis que Finalize ne peut être appelé qu'après la destruction du dernier objet mémoire.

Les règles de méthode d'élimination sont les suivantes:

  • Utilisé pour les ressources non gérées nécessitant une libération immédiate après utilisation.
  • Si Dispose n'est pas appelé, la méthode Finalize doit être implémentée.
  • Après avoir appelé la méthode Dispose, la méthode GC.SuppressFinalize doit être appelée pour éviter la méthode Finalize et éviter un GC inutile.
  • Les exceptions doivent être gérées avec soin si la méthode Dispose est appelée plusieurs fois. Si des ressources sont supprimées, toute méthode d'instance peut lever l'exception ObjectDisposedException.
  • Un objet avec une méthode Dispose précédemment appelée ne peut pas être réutilisé.
  • Dispose est recommandé uniquement pour la gestion des objets de ressources natives et des objets COM (Component Object Model) exposés au .NET Framework.
  • Dispose ne peut pas être appelé simultanément à partir de plusieurs threads, en raison de résultats imprévisibles.
  • Les types valeur ne doivent pas être créés en tant que types jetables ou avec des membres de ressources non gérés.
  • Lors de l'utilisation de ressources non managées, il est recommandé d'appliquer l'instruction Using du code source, qui appelle automatiquement la méthode Dispose de l'objet après avoir terminé le code objet.

Cette définition a été écrite dans le contexte de C #