IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

clr et handlers (et gc accessoirement)


Sujet :

VB.NET

  1. #1
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut clr et handlers (et gc accessoirement)
    bonjour

    après avoir étudié en profondeur tout ce qui est en rapport à dispose, il me reste des questions sur les handlers

    à priori les handlers sont non managés, si on ne les retire pas ca fait quoi ? une fuite mémoire ? des risques de bug ?


    imaginons une classe qui créé un objet et qui fait addhandler objet.event,adressof classe.sub


    si je mets objet à nothing, à priori l'event n'arrivera plus

    si je mets classe à nothing, objet est il mit à nothing immédiatement ?
    si oui, par le gc ou la clr ?
    si non, l'event peut se produire et ne trouvera plus sa sub, ca fait quoi ?

    le handler non retiré fait il une fuite mémoire ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  2. #2
    Membre émérite
    Inscrit en
    Octobre 2006
    Messages
    587
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2006
    Messages : 587
    Par défaut
    Bonjour,

    En fait, les ressources non managées sont inaccessible via le GC donc ça provoque des fuites de mémoires. La méthode Dispose est la solution adoptée par Microsoft pour éviter ce genre de problème. C'est à l'utilisateur de libérer les ressources non managées en fermant le Handle à l'aide de la méthode CloseHandle. La méthode virtuelle Dipose(disposing As Boolean) peut être appelée soit l'utilisateur soit par le GC.

    Lorsque tu met ta classe à Nothing en fait ton objet n'est pas détruit. Il le sera lors du passage du GC. En utilisant un WeakReference sur ton objet la propriété IsAlive retournera true sur ton objet jusqu'à ce que le GC fasse une collecte.

    D'après un article que j'avais lu on oublie souvent quand on crée une classe avec événements de les désabonner et apparemment ça provoquerait une fuite de mémoire.

Discussions similaires

  1. compilation /CLR
    Par moldavi dans le forum MFC
    Réponses: 5
    Dernier message: 24/02/2005, 23h16
  2. #1030 - Reçu l'erreur 127 du handler de la table ??
    Par sepultubob dans le forum Requêtes
    Réponses: 2
    Dernier message: 29/12/2004, 10h40
  3. Réponses: 3
    Dernier message: 18/02/2004, 17h53
  4. [C#] suppression handler sur ImageButton
    Par jld33 dans le forum ASP.NET
    Réponses: 4
    Dernier message: 07/01/2004, 09h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo