J'aime bien faire du code propre (autant que je peux...) et libérer les ressources quand je n'en ai plus besoin.
Il me semble que la fonction Dispose(), disponible pour un certain nombre d'objets, sert à indiquer au garbage collector que les ressources utilisées par l'objet sont prêtes à être recyclées. (dites moi si je me trompe sur la signification de cette fonction !) Et donc je l'utilise dès que je peux pour supprimer mes objets temporaires avant de sortir d'une méthode par exemple...
Mon problème :
Il m'arrive de vouloir supprimer des DataRow d'une DataTable (avec dataRow.Delete() puis AcceptChanges(), ou bien avec dataTable.Rows.Remove(dataRow)). Dans ce cas là le DataRow passe dans un état DataRowState.Detached mais il "existe" toujours, et il n'y a pas de fonction dataRow.Dispose(). Donc même s'il s'agit de lignes que je veux supprimer définitivement, elles "existent" toujours et les ressources ne sont donc pas libérées... Du moins pas immédiatement - si plus aucune variable ne peut être reliée à un objet il finit un jour ou l'autre par être collecté, non ?
Existe-t-il un moyen de "disposer" d'un DataRow de façon explicite ? Et est-ce que j'ai réussi à éviter de raconter des bêtises :p ? La gestion de ressources, un problème pas évident...
Partager