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
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
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
Contrairement à COM, il n'y pas de compteur de référence en .NET mais un
garbage collector qui permet de ne plus avoir de référence cyclique, entre
autres.
Rien ne vous empêche, grâce à une conception soignée de votre classes et de
ces méthodes d'implémenter votre propre compteur de référence qui appellera
la fonction Dispose quand le compteur atteindra 0.
Le mot clé using permet de simplifier grandement l'utilisation de Dispose
<CODE>
using(titi){
...
}
</CODE>
A la sortie de accolade, la méthode Dispode de titi sera automatiquement
exécuté.
Le paramètre disposing de la méthode Dispose généré par le Designer de
formulaire de VS permet de distinguer entre les deux contextes dans
laquelle cette fonction est appelée.
Avec disposing à true, cela exprime le fait que la méthode Dispose avec un
paramètre bool est appelée à partir de la méthode Dispose de l'interface
IDisposable qui, elle, ne prend pas de paramètre.
Avec disposing à false, cela exprime que la méthode Dispose avec un
paramètre bool est appelée à partir de la méthode Finalize (destructeur non
déterministe de la CLR).
Le code doit connaître le contexte d'appel car dans le Finalize, il n'est
pas garanti que les références contenues par l'objet soient encore valides.
En résumé, il est très simple d'implémenter un compteur de référence adapté
à votre utilisation de la classe d'objet et "using" permet de régler les cas
les plus triviaux.
Contrairement à COM, il n'y pas de compteur de référence en .NET mais un
garbage collector qui permet de ne plus avoir de référence cyclique, entre
autres.
Rien ne vous empêche, grâce à une conception soignée de votre classes et de
ces méthodes d'implémenter votre propre compteur de référence qui appellera
la fonction Dispose quand le compteur atteindra 0.
Le mot clé using permet de simplifier grandement l'utilisation de Dispose
<CODE>
using(titi){
...
}
</CODE>
A la sortie de accolade, la méthode Dispode de titi sera automatiquement
exécuté.
Le paramètre disposing de la méthode Dispose généré par le Designer de
formulaire de VS permet de distinguer entre les deux contextes dans
laquelle cette fonction est appelée.
Avec disposing à true, cela exprime le fait que la méthode Dispose avec un
paramètre bool est appelée à partir de la méthode Dispose de l'interface
IDisposable qui, elle, ne prend pas de paramètre.
Avec disposing à false, cela exprime que la méthode Dispose avec un
paramètre bool est appelée à partir de la méthode Finalize (destructeur non
déterministe de la CLR).
Le code doit connaître le contexte d'appel car dans le Finalize, il n'est
pas garanti que les références contenues par l'objet soient encore valides.
En résumé, il est très simple d'implémenter un compteur de référence adapté
à votre utilisation de la classe d'objet et "using" permet de régler les cas
les plus triviaux.
Contrairement à COM, il n'y pas de compteur de référence en .NET mais un
garbage collector qui permet de ne plus avoir de référence cyclique, entre
autres.
Rien ne vous empêche, grâce à une conception soignée de votre classes et de
ces méthodes d'implémenter votre propre compteur de référence qui appellera
la fonction Dispose quand le compteur atteindra 0.
Le mot clé using permet de simplifier grandement l'utilisation de Dispose
<CODE>
using(titi){
...
}
</CODE>
A la sortie de accolade, la méthode Dispode de titi sera automatiquement
exécuté.
Le paramètre disposing de la méthode Dispose généré par le Designer de
formulaire de VS permet de distinguer entre les deux contextes dans
laquelle cette fonction est appelée.
Avec disposing à true, cela exprime le fait que la méthode Dispose avec un
paramètre bool est appelée à partir de la méthode Dispose de l'interface
IDisposable qui, elle, ne prend pas de paramètre.
Avec disposing à false, cela exprime que la méthode Dispose avec un
paramètre bool est appelée à partir de la méthode Finalize (destructeur non
déterministe de la CLR).
Le code doit connaître le contexte d'appel car dans le Finalize, il n'est
pas garanti que les références contenues par l'objet soient encore valides.
En résumé, il est très simple d'implémenter un compteur de référence adapté
à votre utilisation de la classe d'objet et "using" permet de régler les cas
les plus triviaux.
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
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
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
Bonjour,
Est-ce que le IDisposable Pattern avec surcharge du Finalizer pourrait
répondre à votre besoin?
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpconFinalizeDispose.asp
Il appelle automatiquement Dispose dans le cas de la surcharge du Finalizer
en tenant compte du contexte de l'appel (Dispose ou Finalizer).
cdlt,
Frédéric.
"Faust" wrote in message
news: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
Bonjour,
Est-ce que le IDisposable Pattern avec surcharge du Finalizer pourrait
répondre à votre besoin?
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpconFinalizeDispose.asp
Il appelle automatiquement Dispose dans le cas de la surcharge du Finalizer
en tenant compte du contexte de l'appel (Dispose ou Finalizer).
cdlt,
Frédéric.
"Faust" <miss.me@no.where.invalid> wrote in message
news:mn.b5737d53bdc33d10.16328@chez.moi.invalid...
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
Bonjour,
Est-ce que le IDisposable Pattern avec surcharge du Finalizer pourrait
répondre à votre besoin?
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpconFinalizeDispose.asp
Il appelle automatiquement Dispose dans le cas de la surcharge du Finalizer
en tenant compte du contexte de l'appel (Dispose ou Finalizer).
cdlt,
Frédéric.
"Faust" wrote in message
news: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
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
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
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
Que cherchez vous à faire au juste? La phrase "le but étant de permettre à la
classe de faire une action particulière lorsqu'elle détecte qu'on aura plus
besoin d'elle" est particulièrement bizarre. Ce n'est pas à la classe de
détecter qu'on n'a plus besoin d'elle en général. Comment peut-elle mourir si
elle doit détecter des choses...
Simon.
"Faust" a écrit dans le message de news: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
Que cherchez vous à faire au juste? La phrase "le but étant de permettre à la
classe de faire une action particulière lorsqu'elle détecte qu'on aura plus
besoin d'elle" est particulièrement bizarre. Ce n'est pas à la classe de
détecter qu'on n'a plus besoin d'elle en général. Comment peut-elle mourir si
elle doit détecter des choses...
Simon.
"Faust" <miss.me@no.where.invalid> a écrit dans le message de news:
mn.b5737d53bdc33d10.16328@chez.moi.invalid...
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
Que cherchez vous à faire au juste? La phrase "le but étant de permettre à la
classe de faire une action particulière lorsqu'elle détecte qu'on aura plus
besoin d'elle" est particulièrement bizarre. Ce n'est pas à la classe de
détecter qu'on n'a plus besoin d'elle en général. Comment peut-elle mourir si
elle doit détecter des choses...
Simon.
"Faust" a écrit dans le message de news: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
mon but n'est pas forcément qu'elle meure... que tous mes pointeurs
restent "vivants" ne me gène pas.
Par contre, j'ai impérativement besoin qu'elle libère certaines ressources
(des connections entre autre)
et pour cela, j'aurais aimé que la classe libère ces différentes
ressources d'elle même.... même si le programmeur "oublie" de faire un
Close, un Dipose ou toute autre action prévue (un peu ceinture et
bretelle)
et donc bien sûr, elle ne doit le faire qu'une fois le programme ne peut
plus la manipuler. En COM ça reviendrait à dire quand le compteur de
référence tombe à 0.
le soucis est que, pour le cas des connections, si elles ne sont pas
libérées correctement ça me pose des problèmes côté serveur
/_Simon Mourier [MS]_ a utilisé son clavier pour écrire/ :Que cherchez vous à faire au juste? La phrase "le but étant de permettre
à la classe de faire une action particulière lorsqu'elle détecte qu'on
aura plus besoin d'elle" est particulièrement bizarre. Ce n'est pas à la
classe de détecter qu'on n'a plus besoin d'elle en général. Comment
peut-elle mourir si elle doit détecter des choses...
Simon.
"Faust" a écrit dans le message de news: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
--
*/Teträm/*
http://www.tetram.info
"Mange d'abord, defeque ensuite: tu réfléchiras plus tard" - Proverbe
Troll
mon but n'est pas forcément qu'elle meure... que tous mes pointeurs
restent "vivants" ne me gène pas.
Par contre, j'ai impérativement besoin qu'elle libère certaines ressources
(des connections entre autre)
et pour cela, j'aurais aimé que la classe libère ces différentes
ressources d'elle même.... même si le programmeur "oublie" de faire un
Close, un Dipose ou toute autre action prévue (un peu ceinture et
bretelle)
et donc bien sûr, elle ne doit le faire qu'une fois le programme ne peut
plus la manipuler. En COM ça reviendrait à dire quand le compteur de
référence tombe à 0.
le soucis est que, pour le cas des connections, si elles ne sont pas
libérées correctement ça me pose des problèmes côté serveur
/_Simon Mourier [MS]_ a utilisé son clavier pour écrire/ :
Que cherchez vous à faire au juste? La phrase "le but étant de permettre
à la classe de faire une action particulière lorsqu'elle détecte qu'on
aura plus besoin d'elle" est particulièrement bizarre. Ce n'est pas à la
classe de détecter qu'on n'a plus besoin d'elle en général. Comment
peut-elle mourir si elle doit détecter des choses...
Simon.
"Faust" <miss.me@no.where.invalid> a écrit dans le message de news:
mn.b5737d53bdc33d10.16328@chez.moi.invalid...
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
--
*/Teträm/*
http://www.tetram.info
"Mange d'abord, defeque ensuite: tu réfléchiras plus tard" - Proverbe
Troll
mon but n'est pas forcément qu'elle meure... que tous mes pointeurs
restent "vivants" ne me gène pas.
Par contre, j'ai impérativement besoin qu'elle libère certaines ressources
(des connections entre autre)
et pour cela, j'aurais aimé que la classe libère ces différentes
ressources d'elle même.... même si le programmeur "oublie" de faire un
Close, un Dipose ou toute autre action prévue (un peu ceinture et
bretelle)
et donc bien sûr, elle ne doit le faire qu'une fois le programme ne peut
plus la manipuler. En COM ça reviendrait à dire quand le compteur de
référence tombe à 0.
le soucis est que, pour le cas des connections, si elles ne sont pas
libérées correctement ça me pose des problèmes côté serveur
/_Simon Mourier [MS]_ a utilisé son clavier pour écrire/ :Que cherchez vous à faire au juste? La phrase "le but étant de permettre
à la classe de faire une action particulière lorsqu'elle détecte qu'on
aura plus besoin d'elle" est particulièrement bizarre. Ce n'est pas à la
classe de détecter qu'on n'a plus besoin d'elle en général. Comment
peut-elle mourir si elle doit détecter des choses...
Simon.
"Faust" a écrit dans le message de news: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
--
*/Teträm/*
http://www.tetram.info
"Mange d'abord, defeque ensuite: tu réfléchiras plus tard" - Proverbe
Troll
Pour les ressources non managées (handles, connexions, etc...) , il faut
utiliser le pattern proposé par IDisposable. C'est en gros l'unique solution,
et c'est comme ca que sont gérées d'ailleurs toutes les ressources non
managées dans le .NET Framework.
Même si le programmeur oublie d'appeler classe.Dispose(), ce sera appelé
automatiquement.
Je ne vois pas ce qui vous manque?
Pour les ressources non managées (handles, connexions, etc...) , il faut
utiliser le pattern proposé par IDisposable. C'est en gros l'unique solution,
et c'est comme ca que sont gérées d'ailleurs toutes les ressources non
managées dans le .NET Framework.
Même si le programmeur oublie d'appeler classe.Dispose(), ce sera appelé
automatiquement.
Je ne vois pas ce qui vous manque?
Pour les ressources non managées (handles, connexions, etc...) , il faut
utiliser le pattern proposé par IDisposable. C'est en gros l'unique solution,
et c'est comme ca que sont gérées d'ailleurs toutes les ressources non
managées dans le .NET Framework.
Même si le programmeur oublie d'appeler classe.Dispose(), ce sera appelé
automatiquement.
Je ne vois pas ce qui vous manque?
/_Simon Mourier [MS]_ a formulé ce jeudi/ :
> Pour les ressources non managées (handles, connexions, etc...) , il faut
> utiliser le pattern proposé par IDisposable. C'est en gros l'unique
> et c'est comme ca que sont gérées d'ailleurs toutes les ressources non
> managées dans le .NET Framework.
>
> Même si le programmeur oublie d'appeler classe.Dispose(), ce sera appelé
> automatiquement.
oui mais quand précisément? quand le GC aura décidé de faire du ménage
parce que les ressources disponibles pour l'application sont devenues
insufisantes ou dès que la dernière variable pointant sur une instance
d'une classe perdra ce pointage?
mon problème n'est pas tant la libération de ces ressources mais le
moment de cette libération: l'occupation de ces ressources provoque des
verrous à différents niveaux de mon système. Si elles ne sont pas
libérées (quelque soit la façon dont c'est fait), les verrous
persistent et peuvent entrainer un blocage complet du système (qui ne
se limite pas à l'appli qui utilise la classe)
c'est pour ça que j'ai impérativement besoin que ces ressources soient
libérées et ce même si le programmeur oublie de le demander
explicitement et surtout le plus tôt possible (le mieux étant dès
qu'elles ne sont plus utiles)
> Je ne vois pas ce qui vous manque?
une information claire peut-être?
--
*/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
/_Simon Mourier [MS]_ a formulé ce jeudi/ :
> Pour les ressources non managées (handles, connexions, etc...) , il faut
> utiliser le pattern proposé par IDisposable. C'est en gros l'unique
> et c'est comme ca que sont gérées d'ailleurs toutes les ressources non
> managées dans le .NET Framework.
>
> Même si le programmeur oublie d'appeler classe.Dispose(), ce sera appelé
> automatiquement.
oui mais quand précisément? quand le GC aura décidé de faire du ménage
parce que les ressources disponibles pour l'application sont devenues
insufisantes ou dès que la dernière variable pointant sur une instance
d'une classe perdra ce pointage?
mon problème n'est pas tant la libération de ces ressources mais le
moment de cette libération: l'occupation de ces ressources provoque des
verrous à différents niveaux de mon système. Si elles ne sont pas
libérées (quelque soit la façon dont c'est fait), les verrous
persistent et peuvent entrainer un blocage complet du système (qui ne
se limite pas à l'appli qui utilise la classe)
c'est pour ça que j'ai impérativement besoin que ces ressources soient
libérées et ce même si le programmeur oublie de le demander
explicitement et surtout le plus tôt possible (le mieux étant dès
qu'elles ne sont plus utiles)
> Je ne vois pas ce qui vous manque?
une information claire peut-être?
--
*/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
/_Simon Mourier [MS]_ a formulé ce jeudi/ :
> Pour les ressources non managées (handles, connexions, etc...) , il faut
> utiliser le pattern proposé par IDisposable. C'est en gros l'unique
> et c'est comme ca que sont gérées d'ailleurs toutes les ressources non
> managées dans le .NET Framework.
>
> Même si le programmeur oublie d'appeler classe.Dispose(), ce sera appelé
> automatiquement.
oui mais quand précisément? quand le GC aura décidé de faire du ménage
parce que les ressources disponibles pour l'application sont devenues
insufisantes ou dès que la dernière variable pointant sur une instance
d'une classe perdra ce pointage?
mon problème n'est pas tant la libération de ces ressources mais le
moment de cette libération: l'occupation de ces ressources provoque des
verrous à différents niveaux de mon système. Si elles ne sont pas
libérées (quelque soit la façon dont c'est fait), les verrous
persistent et peuvent entrainer un blocage complet du système (qui ne
se limite pas à l'appli qui utilise la classe)
c'est pour ça que j'ai impérativement besoin que ces ressources soient
libérées et ce même si le programmeur oublie de le demander
explicitement et surtout le plus tôt possible (le mieux étant dès
qu'elles ne sont plus utiles)
> Je ne vois pas ce qui vous manque?
une information claire peut-être?
--
*/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
/_Simon Mourier [MS]_ a formulé ce jeudi/ :Pour les ressources non managées (handles, connexions, etc...) , il faut
utiliser le pattern proposé par IDisposable. C'est en gros l'unique
solution, et c'est comme ca que sont gérées d'ailleurs toutes les
ressources non managées dans le .NET Framework.
Même si le programmeur oublie d'appeler classe.Dispose(), ce sera appelé
automatiquement.
oui mais quand précisément? quand le GC aura décidé de faire du ménage
parce que les ressources disponibles pour l'application sont devenues
insufisantes ou dès que la dernière variable pointant sur une instance
d'une classe perdra ce pointage?
mon problème n'est pas tant la libération de ces ressources mais le moment
de cette libération: l'occupation de ces ressources provoque des verrous à
différents niveaux de mon système. Si elles ne sont pas libérées (quelque
soit la façon dont c'est fait), les verrous persistent et peuvent
entrainer un blocage complet du système (qui ne se limite pas à l'appli
qui utilise la classe)
c'est pour ça que j'ai impérativement besoin que ces ressources soient
libérées et ce même si le programmeur oublie de le demander explicitement
et surtout le plus tôt possible (le mieux étant dès qu'elles ne sont plus
utiles)Je ne vois pas ce qui vous manque?
une information claire peut-être?
--
*/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
/_Simon Mourier [MS]_ a formulé ce jeudi/ :
Pour les ressources non managées (handles, connexions, etc...) , il faut
utiliser le pattern proposé par IDisposable. C'est en gros l'unique
solution, et c'est comme ca que sont gérées d'ailleurs toutes les
ressources non managées dans le .NET Framework.
Même si le programmeur oublie d'appeler classe.Dispose(), ce sera appelé
automatiquement.
oui mais quand précisément? quand le GC aura décidé de faire du ménage
parce que les ressources disponibles pour l'application sont devenues
insufisantes ou dès que la dernière variable pointant sur une instance
d'une classe perdra ce pointage?
mon problème n'est pas tant la libération de ces ressources mais le moment
de cette libération: l'occupation de ces ressources provoque des verrous à
différents niveaux de mon système. Si elles ne sont pas libérées (quelque
soit la façon dont c'est fait), les verrous persistent et peuvent
entrainer un blocage complet du système (qui ne se limite pas à l'appli
qui utilise la classe)
c'est pour ça que j'ai impérativement besoin que ces ressources soient
libérées et ce même si le programmeur oublie de le demander explicitement
et surtout le plus tôt possible (le mieux étant dès qu'elles ne sont plus
utiles)
Je ne vois pas ce qui vous manque?
une information claire peut-être?
--
*/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
/_Simon Mourier [MS]_ a formulé ce jeudi/ :Pour les ressources non managées (handles, connexions, etc...) , il faut
utiliser le pattern proposé par IDisposable. C'est en gros l'unique
solution, et c'est comme ca que sont gérées d'ailleurs toutes les
ressources non managées dans le .NET Framework.
Même si le programmeur oublie d'appeler classe.Dispose(), ce sera appelé
automatiquement.
oui mais quand précisément? quand le GC aura décidé de faire du ménage
parce que les ressources disponibles pour l'application sont devenues
insufisantes ou dès que la dernière variable pointant sur une instance
d'une classe perdra ce pointage?
mon problème n'est pas tant la libération de ces ressources mais le moment
de cette libération: l'occupation de ces ressources provoque des verrous à
différents niveaux de mon système. Si elles ne sont pas libérées (quelque
soit la façon dont c'est fait), les verrous persistent et peuvent
entrainer un blocage complet du système (qui ne se limite pas à l'appli
qui utilise la classe)
c'est pour ça que j'ai impérativement besoin que ces ressources soient
libérées et ce même si le programmeur oublie de le demander explicitement
et surtout le plus tôt possible (le mieux étant dès qu'elles ne sont plus
utiles)Je ne vois pas ce qui vous manque?
une information claire peut-être?
--
*/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