2008-10-22 7 views
2

Est-ce que quelqu'un a un bon article ou un tutoriel sur l'utilisation correcte de la disposition et IDisposable. J'essaie d'expliquer cela à certains développeurs junior et je voulais obtenir du matériel supplémentaire, des exemples, etc.Winforms Disposing IDisposable

Répondre

1

Beaucoup de sources plus anciennes de conseils à ce sujet impliquent que IDisposable est lié d'une certaine manière aux finaliseurs. Portez une attention toute particulière aux commentaires de Herb Sutter sur ce sujet. NE PAS sauter à la conclusion que vous devez écrire un finaliseur si vous implémentez IDisposable, pour "s'assurer que Dispose s'exécute éventuellement au cas où le client oublie de l'appeler". Ce n'est généralement pas le cas. Une classe peut implémenter IDisposable afin qu'elle puisse effectuer divers appels sur des objets gérés qu'elle possède, par ex. Jetez ces objets à leur tour. Ceci est absolument inutile à faire à partir d'un finaliseur car les finaliseurs ne peuvent pas accéder de manière fiable à d'autres objets gérés. Tout ce qu'un finaliseur fait doit pouvoir être appelé depuis n'importe quel thread. Les finaliseurs sont une chose avancée très obscure, tandis que IDisposable est un modèle simple qui devrait être omniprésent. Et l'avènement de SafeHandle changes the situation further.

0

Dites-leur d'utiliser toujours la déclaration en utilisant des objets jetables.

using (MyDisposable obj = new MyDisposable()) 
{ 
    obj.some_stuff(); 

} //obj is disposed here