Numéro d'article: 315528 - Dernière mise à jour: vendredi 11 mai 2007 - Version: 1.3 INFO : Implémentation de la méthode Dispose dans une classe dérivée
Ancien nº de publication de cet article : F315528 RésuméLorsque vous créez une classe qui étend une classe de base, vous devez gérer la libération des ressources allouées, d'une manière ou d'une autre. Pour ce faire, la méthode Dispose de la classe de base doit être substituée (redéclarée) dans les classes dérivées. Cet article aborde des problèmes couramment rencontrés dans ce scénario et explique la procédure à suivre pour substituer (redéclarer) correctement la méthode Dispose. Il est destiné à clarifier certaines des subtilités de l'article d'Aide Visual Basic .NET suivant : http://msdn2.microsoft.com/en-us/library/fs2xkftw(vs.71).aspx
(http://msdn2.microsoft.com/en-us/library/fs2xkftw(vs.71).aspx)
Consultez ce document d'Aide pour obtenir des informations détaillées sur la gestion des erreurs et des exemples généraux de la méthode Dispose.
Plus d'informationsUne classe de base doit contenir un ensemble surchargé de méthodes Dispose. La première instance de l'exemple de code qui suit est une version sans paramètres, et la seconde instance accepte un paramètre booléen : Dispose() est la méthode appelée lorsqu'un objet est supprimé du code dans lequel il a été créé. C'est une méthode Public. Par conséquent, elle peut être utilisée lorsqu'une instance de la classe existe. La méthode Dispose() appelle ensuite la méthode Dispose(Boolean) et passe une valeur TRUE. La méthode Dispose(Boolean) est responsable du nettoyage des ressources de la classe. Lorsqu'une classe est dérivée d'une classe de base, seule la méthode Dispose(Boolean) doit être substituée. Tout le nettoyage des ressources de la classe dérivée est effectué dans cette méthode substituée, puis la méthode Dispose(Boolean) pour la classe de base est appelée. Voici un exemple primitif de la fonction substituant la classe de base : Dispose() sert de point d'entrée pour l'accès public à la suppression d'un objet et permet de garantir que la valeur TRUE est passée à la méthode Dispose(Boolean). La valeur FALSE doit être passée uniquement lorsque la méthode Dispose(Boolean) est appelée par la méthode d'exécution ou la méthode Finalize. Lorsque la valeur FALSE est passée, seules les ressources non gérées sont supprimées. Lorsque la valeur TRUE est passée, les ressources gérées et non gérées sont supprimées. L'environnement de développement Visual Studio insère le code pour substituer la méthode Dispose() dans une classe qui hérite d'un objet système (par exemple, Inherits System.Windows.Forms.TextBox). Cela s'effectue à partir des menus (situés, par défaut, en haut de la fenêtre de code) en sélectionnant Substitutions, puis en cliquant sur Dispose(). Le code inséré ressemble à celui-ci : Une exception non gérée du type 'System.TypeLoadException' s'est produite dans system.windows.forms.dll. Informations supplémentaires : La déclaration référencée dans une implémentation de méthode ne peut pas être une méthode finale. Type : ClassLibrary1.UserControl1. Assembly : Dispose. Pour corriger ce problème, il vous suffit de surcharger la méthode Dispose(Boolean) au lieu de Dispose(), et de vous assurer qu'un appel est effectué à la méthode Dispose(Boolean) de la classe de base et que la valeur TRUE est passée à cette méthode. REMARQUE : Dans Visual Basic .NET, le mot clé Overridable est utilisé comme le mot clé Virtual dans C# et C++. Les méthodes sont, par défaut, NotOverridable. RéférencesRubriques d'aide connexes :
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT. | Autres ressources Autres sites d'aide
CommunautésObtenir de l'aideTraductions disponibles
|






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email
Retour au début
