tournevice
Messages postés10Date d'inscriptionlundi 27 février 2006StatutMembreDernière intervention26 décembre 2006
-
12 juil. 2006 à 13:35
tournevice
Messages postés10Date d'inscriptionlundi 27 février 2006StatutMembreDernière intervention26 décembre 2006
-
13 juil. 2006 à 14:55
Salut,
J'aurai voulut avoir un renseignement et des avis. Mon but serait d'implémenter une méthode dispose() pour permettre de désallouer proprement la mémoire occupée par chaque instanciation d'une classe que j'ai écrite, et qui utilise des objets ADO .NET pour se connecter à une base de données sql server 2000 et insérer, supprimer, mettre à jour des données dans la base. Cette classe dispose des champs suivant (suivis de méthodes pas intéressantes pour ce sujet) :
Public AgentID As New SqlClient.SqlParameter("@AgentID", SqlDbType.Int)
Public BrigadeID As New SqlClient.SqlParameter("@BrigadeID", SqlDbType.Int)
Public FonctionID As New SqlClient.SqlParameter("@FonctionID", SqlDbType.Int)
Public Visa As New SqlClient.SqlParameter("@Visa", SqlDbType.Image)
Je voulais savoir, d'une part, si l'implémentation de la méthode dispose(), dans mon cas, est judicieuse, ou s'il vaut mieux laisser faire le garbage collector. Dans le cas ou son implémentation serait une bonne chose, je me heurte à un petit problème. L'objet SqlClient.SqlParameter ne propose pas de méthode dispose. Ainsi, lorsque je veux le caster en IDisposable, lors de l'execution, .NET me dit que j'ai pas le droit de faire ce cast. Comment faire?
Voici mon code:
Private disposed As Boolean = False
Protected Overridable Sub Dispose(ByVal disposing As Boolean)
If Not disposed Then
If disposing Then
If Not AgentID Is Nothing Then
CType(AgentID, IDisposable).Dispose()
End If
If Not BrigadeID Is Nothing Then
CType(BrigadeID, IDisposable).Dispose()
End If
If Not FonctionID Is Nothing Then
CType(FonctionID, IDisposable).Dispose()
End If
If Not Visa Is Nothing Then
CType(Visa, IDisposable).Dispose()
End If
End If
disposed = True
End If
End Sub
Public Sub Dispose() Implements IDisposable.Dispose
Dispose(True)
End Sub
cs_eldim
Messages postés956Date d'inscriptionlundi 30 mai 2005StatutMembreDernière intervention21 août 20141 13 juil. 2006 à 10:06
Bonjour,
Le dispose n'est util que sur des composants non managés comme des composant COM par exemple.
Comme les formulaires contiennent des composants non managés on a une méthode dispose dessus.
Si tu crée une class elle est managée par défaut donc tu n'as pas besoins de faire une dispose sauf si elle contient des object COM.
Les objets .NET sont managés donc pas besoins
-- Pourquoi faire simple quand on peut faire compliquer --