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
Un bon point de départ est cet article MSDN par Shawn Farkas http://msdn.microsoft.com/en-us/magazine/cc163392.aspx. L'article définitif est par Joe Duffy au http://www.bluebytesoftware.com/blog/2005/04/08/DGUpdateDisposeFinalizationAndResourceManagement.aspx avec un certain suivi dans http://www.bluebytesoftware.com/blog/2008/02/18/IDisposableFinalizationAndConcurrency.aspx
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.
Voici la mienne. :-)
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
- 1. IDisposable
- 2. StructureMap InstanceScope.Hybrid et IDisposable
- 3. SharePoint SPSite Disposing
- 4. IDisposable Winform
- 5. Chaîne IDisposable
- 6. ASP.NET MVC et Idisposable
- 7. EntLib IDisposable conversion
- 8. XmlReader et IDisposable
- 9. DI: Gestion de la vie des objets IDisposable
- 10. Cette implémentation IDisposable est-elle correcte?
- 11. Session contenant des éléments implémentant IDisposable
- 12. Classe de base IDisposable qui possède une ressource jetable gérée, que faire dans les sous-classes?
- 13. WinForms infobulle dans WinForms DataGridViewImageColumn
- 14. Les objets IDisposable dans HttpContext.Current.Session sont-ils disposés sur Application_End?
- 15. Comment ajouter un objet IDisposable + delegate à une classe existante
- 16. Comment savoir si une référence d'objet IDisposable est supprimée?
- 17. comment mettre en place un IEnumerable <IDisposable>
- 18. IUsable: le contrôle des ressources d'une meilleure façon que IDisposable
- 19. Comment IDisposable est-il implémenté sur FileStream dans .Net 1.1
- 20. WinForms TreeView
- 21. d'applications WinForms
- 22. winforms accordéon
- 23. Existe-t-il un moyen de s'assurer que Dispose() est appelé en exception lors de la désérialisation d'une classe IDisposable?
- 24. WinForms Interop, glisser-déposer à partir de WinForms -> WPF
- 25. Pourquoi appeler Dispose() sur BinaryReader entraîne une erreur de compilation?
- 26. Verrouiller un contrôle winforms
- 27. Chemins relatifs dans Winforms
- 28. winforms save datatable localement
- 29. Choix multiple sur WinForms
- 30. Readonly ComboBox dans WinForms
"Si vous créez une classe qui n'utilise pas de ressources non managées, vous ne devez pas implémenter IDisposable." D'où les gens ont-ils cette idée? –