bonjour,
je m'interroge sur la destructions des objets dans vb.net
si j'ai la procédure suivante
public sub Procedure()
dim Obj as new object
end sub
Est ce que l'objet est automatiquement détruit à la sortie de la procédure
ou est ce que je dois faire :
Obj.dispose : Obj = nothing
Merci
Sylvain
bonjour,
je m'interroge sur la destructions des objets dans vb.net
si j'ai la procédure suivante
public sub Procedure()
dim Obj as new object
end sub
Est ce que l'objet est automatiquement détruit à la sortie de la procédure
ou est ce que je dois faire :
Obj.dispose : Obj = nothing
Merci
Sylvain
bonjour,
je m'interroge sur la destructions des objets dans vb.net
si j'ai la procédure suivante
public sub Procedure()
dim Obj as new object
end sub
Est ce que l'objet est automatiquement détruit à la sortie de la procédure
ou est ce que je dois faire :
Obj.dispose : Obj = nothing
Merci
Sylvain
bonjour,
je m'interroge sur la destructions des objets dans vb.net
si j'ai la procédure suivante
public sub Procedure()
dim Obj as new object
end sub
Est ce que l'objet est automatiquement détruit à la sortie de la procédure
ou est ce que je dois faire :
Obj.dispose : Obj = nothing
Merci
Sylvain
bonjour,
je m'interroge sur la destructions des objets dans vb.net
si j'ai la procédure suivante
public sub Procedure()
dim Obj as new object
end sub
Est ce que l'objet est automatiquement détruit à la sortie de la procédure
ou est ce que je dois faire :
Obj.dispose : Obj = nothing
Merci
Sylvain
bonjour,
je m'interroge sur la destructions des objets dans vb.net
si j'ai la procédure suivante
public sub Procedure()
dim Obj as new object
end sub
Est ce que l'objet est automatiquement détruit à la sortie de la procédure
ou est ce que je dois faire :
Obj.dispose : Obj = nothing
Merci
Sylvain
si j'ai la procédure suivante
public sub Procedure()
dim Obj as new object
end sub
Est ce que l'objet est automatiquement détruit à la sortie de la
procédure ou est ce que je dois faire :
Obj.dispose : Obj = nothing
si j'ai la procédure suivante
public sub Procedure()
dim Obj as new object
end sub
Est ce que l'objet est automatiquement détruit à la sortie de la
procédure ou est ce que je dois faire :
Obj.dispose : Obj = nothing
si j'ai la procédure suivante
public sub Procedure()
dim Obj as new object
end sub
Est ce que l'objet est automatiquement détruit à la sortie de la
procédure ou est ce que je dois faire :
Obj.dispose : Obj = nothing
Sylvain MALLEVAL wrote:
> si j'ai la procédure suivante
>
> public sub Procedure()
> dim Obj as new object
> end sub
>
> Est ce que l'objet est automatiquement détruit à la sortie de la
> procédure ou est ce que je dois faire :
> Obj.dispose : Obj = nothing
Bonjour,
En complément à ce qu'a déjà dit Bruno, j'ajouterai quelques détails...
1. Ce qu'il est important de comprendre avec le Garbage Collector de
.Net, c'est que l'on ne maîtrise pas le moment de la destruction
effective de l'objet. Et donc le moment où la méthode Finalize sera
appelée. C'est automatique mais non déterministe. Si l'objet s'est
alloué des ressources qui coûtent cher et qui sont libérées
explicitement dans la méthode Finalize, cela peut être gênant. Si
l'objet a vécu très longtemps, il sera probablement passé en Génération
2 au niveau du GC et il se passera d'autant plus de temps avant qu'il ne
soit libéré (cela peut se chiffrer en minutes, voire en heures...).
2. Pour éviter ce problème, on peut décider d'implémenter dans cet objet
la méthode IDisposable. On utilise la méthode Dispose pour nettoyer
l'objet (mais il faut que cet appel soit fait explicitement par le code
utilisateur - sauf dans certaisn cas). Cela doit être documenté. Il est
fondamental dans ce cas d'appeler GC.SuppressFinalize sur l'objet
pendant l'exécution de Dispose pour que le GC n'inscrive pas l'objet
dans la file d'attente des appels à Finalize quand il aura décidé de
détruire l'objet. Cela permettra à l'objet d'être détruit plus tôt.
--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Sylvain MALLEVAL wrote:
> si j'ai la procédure suivante
>
> public sub Procedure()
> dim Obj as new object
> end sub
>
> Est ce que l'objet est automatiquement détruit à la sortie de la
> procédure ou est ce que je dois faire :
> Obj.dispose : Obj = nothing
Bonjour,
En complément à ce qu'a déjà dit Bruno, j'ajouterai quelques détails...
1. Ce qu'il est important de comprendre avec le Garbage Collector de
.Net, c'est que l'on ne maîtrise pas le moment de la destruction
effective de l'objet. Et donc le moment où la méthode Finalize sera
appelée. C'est automatique mais non déterministe. Si l'objet s'est
alloué des ressources qui coûtent cher et qui sont libérées
explicitement dans la méthode Finalize, cela peut être gênant. Si
l'objet a vécu très longtemps, il sera probablement passé en Génération
2 au niveau du GC et il se passera d'autant plus de temps avant qu'il ne
soit libéré (cela peut se chiffrer en minutes, voire en heures...).
2. Pour éviter ce problème, on peut décider d'implémenter dans cet objet
la méthode IDisposable. On utilise la méthode Dispose pour nettoyer
l'objet (mais il faut que cet appel soit fait explicitement par le code
utilisateur - sauf dans certaisn cas). Cela doit être documenté. Il est
fondamental dans ce cas d'appeler GC.SuppressFinalize sur l'objet
pendant l'exécution de Dispose pour que le GC n'inscrive pas l'objet
dans la file d'attente des appels à Finalize quand il aura décidé de
détruire l'objet. Cela permettra à l'objet d'être détruit plus tôt.
--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Sylvain MALLEVAL wrote:
> si j'ai la procédure suivante
>
> public sub Procedure()
> dim Obj as new object
> end sub
>
> Est ce que l'objet est automatiquement détruit à la sortie de la
> procédure ou est ce que je dois faire :
> Obj.dispose : Obj = nothing
Bonjour,
En complément à ce qu'a déjà dit Bruno, j'ajouterai quelques détails...
1. Ce qu'il est important de comprendre avec le Garbage Collector de
.Net, c'est que l'on ne maîtrise pas le moment de la destruction
effective de l'objet. Et donc le moment où la méthode Finalize sera
appelée. C'est automatique mais non déterministe. Si l'objet s'est
alloué des ressources qui coûtent cher et qui sont libérées
explicitement dans la méthode Finalize, cela peut être gênant. Si
l'objet a vécu très longtemps, il sera probablement passé en Génération
2 au niveau du GC et il se passera d'autant plus de temps avant qu'il ne
soit libéré (cela peut se chiffrer en minutes, voire en heures...).
2. Pour éviter ce problème, on peut décider d'implémenter dans cet objet
la méthode IDisposable. On utilise la méthode Dispose pour nettoyer
l'objet (mais il faut que cet appel soit fait explicitement par le code
utilisateur - sauf dans certaisn cas). Cela doit être documenté. Il est
fondamental dans ce cas d'appeler GC.SuppressFinalize sur l'objet
pendant l'exécution de Dispose pour que le GC n'inscrive pas l'objet
dans la file d'attente des appels à Finalize quand il aura décidé de
détruire l'objet. Cela permettra à l'objet d'être détruit plus tôt.
--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
> Tous les treenodes, les datasets, les forms, etc... Une fois que j'ai fini
de les utiliser, je fais un dispose et un nothing, comme ça je suis sur
ca disparais... le garbage ne sera là qu'au cas ou j'aurais oublier de
un truc par inadvertance...
> Tous les treenodes, les datasets, les forms, etc... Une fois que j'ai fini
de les utiliser, je fais un dispose et un nothing, comme ça je suis sur
ca disparais... le garbage ne sera là qu'au cas ou j'aurais oublier de
un truc par inadvertance...
> Tous les treenodes, les datasets, les forms, etc... Une fois que j'ai fini
de les utiliser, je fais un dispose et un nothing, comme ça je suis sur
ca disparais... le garbage ne sera là qu'au cas ou j'aurais oublier de
un truc par inadvertance...
Merci pour vos explication, mais ca vrai que me palucher la doc me
parait un peut difficile surtout que ca à l'air pointu... Donc, en
gros, le mieux serait que je libère mes objets manuellement pour être
sur que cela soit fait... Comme ca au moins je suis tranquille...
Merci pour vos explication, mais ca vrai que me palucher la doc me
parait un peut difficile surtout que ca à l'air pointu... Donc, en
gros, le mieux serait que je libère mes objets manuellement pour être
sur que cela soit fait... Comme ca au moins je suis tranquille...
Merci pour vos explication, mais ca vrai que me palucher la doc me
parait un peut difficile surtout que ca à l'air pointu... Donc, en
gros, le mieux serait que je libère mes objets manuellement pour être
sur que cela soit fait... Comme ca au moins je suis tranquille...
Mettre une variable contenant une référence à un objet à Nothing ne
fait que signifier à .Net que l'on abandonne cette référence. Cela ne
provoque *en aucune manière* la destruction immédiate de l'objet de
manière certaine, même s'il n'existe aucune autre référence au même
objet ailleurs dans le programme.
Mettre une variable contenant une référence à un objet à Nothing ne
fait que signifier à .Net que l'on abandonne cette référence. Cela ne
provoque *en aucune manière* la destruction immédiate de l'objet de
manière certaine, même s'il n'existe aucune autre référence au même
objet ailleurs dans le programme.
Mettre une variable contenant une référence à un objet à Nothing ne
fait que signifier à .Net que l'on abandonne cette référence. Cela ne
provoque *en aucune manière* la destruction immédiate de l'objet de
manière certaine, même s'il n'existe aucune autre référence au même
objet ailleurs dans le programme.
Merci pour vos explication, mais ca vrai que me palucher la doc me parait
un
peut difficile surtout que ca à l'air pointu... Donc, en gros, le mieux
serait que je libère mes objets manuellement pour être sur que cela soit
fait... Comme ca au moins je suis tranquille...
Tous les treenodes, les datasets, les forms, etc... Une fois que j'ai fini
de les utiliser, je fais un dispose et un nothing, comme ça je suis sur
que
ca disparais... le garbage ne sera là qu'au cas ou j'aurais oublier de
tuer
un truc par inadvertance...
Merci encore pour votre aide
Sylvain
"Patrick Philippot" a écrit dans le
message de news:Sylvain MALLEVAL wrote:
> si j'ai la procédure suivante
>
> public sub Procedure()
> dim Obj as new object
> end sub
>
> Est ce que l'objet est automatiquement détruit à la sortie de la
> procédure ou est ce que je dois faire :
> Obj.dispose : Obj = nothing
Bonjour,
En complément à ce qu'a déjà dit Bruno, j'ajouterai quelques détails...
1. Ce qu'il est important de comprendre avec le Garbage Collector de
.Net, c'est que l'on ne maîtrise pas le moment de la destruction
effective de l'objet. Et donc le moment où la méthode Finalize sera
appelée. C'est automatique mais non déterministe. Si l'objet s'est
alloué des ressources qui coûtent cher et qui sont libérées
explicitement dans la méthode Finalize, cela peut être gênant. Si
l'objet a vécu très longtemps, il sera probablement passé en Génération
2 au niveau du GC et il se passera d'autant plus de temps avant qu'il ne
soit libéré (cela peut se chiffrer en minutes, voire en heures...).
2. Pour éviter ce problème, on peut décider d'implémenter dans cet objet
la méthode IDisposable. On utilise la méthode Dispose pour nettoyer
l'objet (mais il faut que cet appel soit fait explicitement par le code
utilisateur - sauf dans certaisn cas). Cela doit être documenté. Il est
fondamental dans ce cas d'appeler GC.SuppressFinalize sur l'objet
pendant l'exécution de Dispose pour que le GC n'inscrive pas l'objet
dans la file d'attente des appels à Finalize quand il aura décidé de
détruire l'objet. Cela permettra à l'objet d'être détruit plus tôt.
--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Merci pour vos explication, mais ca vrai que me palucher la doc me parait
un
peut difficile surtout que ca à l'air pointu... Donc, en gros, le mieux
serait que je libère mes objets manuellement pour être sur que cela soit
fait... Comme ca au moins je suis tranquille...
Tous les treenodes, les datasets, les forms, etc... Une fois que j'ai fini
de les utiliser, je fais un dispose et un nothing, comme ça je suis sur
que
ca disparais... le garbage ne sera là qu'au cas ou j'aurais oublier de
tuer
un truc par inadvertance...
Merci encore pour votre aide
Sylvain
"Patrick Philippot" <patrick.philippot@mainsoft.xx.fr> a écrit dans le
message de news: eFHDNKDwEHA.2876@TK2MSFTNGP12.phx.gbl...
Sylvain MALLEVAL wrote:
> si j'ai la procédure suivante
>
> public sub Procedure()
> dim Obj as new object
> end sub
>
> Est ce que l'objet est automatiquement détruit à la sortie de la
> procédure ou est ce que je dois faire :
> Obj.dispose : Obj = nothing
Bonjour,
En complément à ce qu'a déjà dit Bruno, j'ajouterai quelques détails...
1. Ce qu'il est important de comprendre avec le Garbage Collector de
.Net, c'est que l'on ne maîtrise pas le moment de la destruction
effective de l'objet. Et donc le moment où la méthode Finalize sera
appelée. C'est automatique mais non déterministe. Si l'objet s'est
alloué des ressources qui coûtent cher et qui sont libérées
explicitement dans la méthode Finalize, cela peut être gênant. Si
l'objet a vécu très longtemps, il sera probablement passé en Génération
2 au niveau du GC et il se passera d'autant plus de temps avant qu'il ne
soit libéré (cela peut se chiffrer en minutes, voire en heures...).
2. Pour éviter ce problème, on peut décider d'implémenter dans cet objet
la méthode IDisposable. On utilise la méthode Dispose pour nettoyer
l'objet (mais il faut que cet appel soit fait explicitement par le code
utilisateur - sauf dans certaisn cas). Cela doit être documenté. Il est
fondamental dans ce cas d'appeler GC.SuppressFinalize sur l'objet
pendant l'exécution de Dispose pour que le GC n'inscrive pas l'objet
dans la file d'attente des appels à Finalize quand il aura décidé de
détruire l'objet. Cela permettra à l'objet d'être détruit plus tôt.
--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Merci pour vos explication, mais ca vrai que me palucher la doc me parait
un
peut difficile surtout que ca à l'air pointu... Donc, en gros, le mieux
serait que je libère mes objets manuellement pour être sur que cela soit
fait... Comme ca au moins je suis tranquille...
Tous les treenodes, les datasets, les forms, etc... Une fois que j'ai fini
de les utiliser, je fais un dispose et un nothing, comme ça je suis sur
que
ca disparais... le garbage ne sera là qu'au cas ou j'aurais oublier de
tuer
un truc par inadvertance...
Merci encore pour votre aide
Sylvain
"Patrick Philippot" a écrit dans le
message de news:Sylvain MALLEVAL wrote:
> si j'ai la procédure suivante
>
> public sub Procedure()
> dim Obj as new object
> end sub
>
> Est ce que l'objet est automatiquement détruit à la sortie de la
> procédure ou est ce que je dois faire :
> Obj.dispose : Obj = nothing
Bonjour,
En complément à ce qu'a déjà dit Bruno, j'ajouterai quelques détails...
1. Ce qu'il est important de comprendre avec le Garbage Collector de
.Net, c'est que l'on ne maîtrise pas le moment de la destruction
effective de l'objet. Et donc le moment où la méthode Finalize sera
appelée. C'est automatique mais non déterministe. Si l'objet s'est
alloué des ressources qui coûtent cher et qui sont libérées
explicitement dans la méthode Finalize, cela peut être gênant. Si
l'objet a vécu très longtemps, il sera probablement passé en Génération
2 au niveau du GC et il se passera d'autant plus de temps avant qu'il ne
soit libéré (cela peut se chiffrer en minutes, voire en heures...).
2. Pour éviter ce problème, on peut décider d'implémenter dans cet objet
la méthode IDisposable. On utilise la méthode Dispose pour nettoyer
l'objet (mais il faut que cet appel soit fait explicitement par le code
utilisateur - sauf dans certaisn cas). Cela doit être documenté. Il est
fondamental dans ce cas d'appeler GC.SuppressFinalize sur l'objet
pendant l'exécution de Dispose pour que le GC n'inscrive pas l'objet
dans la file d'attente des appels à Finalize quand il aura décidé de
détruire l'objet. Cela permettra à l'objet d'être détruit plus tôt.
--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr