OVH Cloud OVH Cloud

Variable inutilisée

13 réponses
Avatar
Faust
bonjour,

savez-vous s'il existe une procédure qui soit appelée lorsque que le
compteur de référence d'une instance de classe tombe à zéro (donc à
priori quand l'instance n'est plus utilisée où que ce soit et qu'elle
sera libérée par le GC)?

le but étant de permettre à la classe de faire une action particulière
lorsqu'elle détecte qu'on aura plus besoin d'elle (libération de
certaines ressources) sans que le programmeur qui utilise cette classe
soit obligé de faire lui même une gestion fastidieuse pour savoir s'il
peut faire un dispose

à moins (et c'est possible parce que j'ai pas tout compris) que le
paramètre Disposing du Dispose serve justement à ça: que le dispose est
appelé systématiquement à chaque fois qu'une variable passe "out of
scope" avec le paramètre Disposing à false tant qu'il reste des
variables "not out of scope" et passé à true dans le cas où c'est la
dernière variable qui passe "out of scope"?

--
*/Teträm/*
http://www.tetram.info

"Après ton vomi, ne remange pas tout, laisses-en pour tes mouches" -
Proverbe Troll

3 réponses

1 2
Avatar
Faust
/_Simon Mourier [MS]_ a émis l'idée suivante/ :
L'ensemble du framework .NET a les même contraintes fonctionnelles
(utilisation de ressources au bon moment, etc;..), et le bon pattern est
IDisposable. La documentation de IDisposable me semble tout à fait claire sur
le sujet.

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemIDisposableClassTopic.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconimplementingdisposemethod.asp

Il faut que vous construisiez vos classes autour de ce pattern, et que vous
indiquiez au programmeur appelant votre code de libérer les ressources en
appelant Dispose ou en utilisant la directive "using" (en C#). L'ensemble des
objets de GDI+ par exemple est documenté de cette façon. Si le programmeur
oublie d'appeler Dispose sur un Pen ou un Brush, il aura des problèmes. Dans
votre cas, c'est la même chose.



donc j'ai plus qu'à croiser les doigts
ok merci bien

--
*/Teträm/*
http://www.tetram.info

"Mange d'abord, defeque ensuite: tu réfléchiras plus tard" - Proverbe
Troll
Avatar
Guillaume Davion
Un article très clair sur le fonctionnement du garbage collector (en
anglais) :

http://msdn.microsoft.com/msdnmag/issues/1100/GCI/
Avatar
Faust
/_Guillaume Davion_ a exprimé avec précision/ :
Un article très clair sur le fonctionnement du garbage collector (en
anglais) :

http://msdn.microsoft.com/msdnmag/issues/1100/GCI/



effectivement très clair et très complet et qui, malheureusement pour
moi, confirme la conclusion que j'ai tiré de tout ça
merci pour l'info

--
*/Teträm/*
http://www.tetram.info

"Le monde est rond comme le cul d'une pucelle. On ne peut pas s'y
perdre"
Chevalier Or-Azur
1 2