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 :

Control.ControlCollection.Clear & Dispose


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 154
    Par défaut Control.ControlCollection.Clear & Dispose
    Hello,

    Si l'on regarde dans MSDN pour cette méthode, on trouve cette note :

    Important :
    L'appel à la méthode Clear ne supprime pas de handle de contrôle de la mémoire. Vous devez appeler explicitement la méthode Dispose pour éviter des fuites de mémoire.


    On se demande à quoi peut bien servir le Clear alors...

    Bref, il s'avère que je doit utiliser un FlawLayoutPanel pour y ajouter et supprimer des PicturesBox qui comme tout bon contrôle sont "Disposable".

    Ma question est donc, que faut il vraiment faire pour bien purger le FlawLayoutPanel ?

    ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            While MyFlawLayoutPanel.Controls.Count > 0
                MyFlawLayoutPanel.Controls(0).Dispose()
            End While
            MyFlawLayoutPanel.Controls.Clear()
    Ou ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            While MyFlawLayoutPanel.Controls.Count > 0
                Dim Ctrl As Control
                Ctrl = MyFlawLayoutPanel.Controls(0)
                MyFlawLayoutPanel.Controls.Remove(Ctrl)
                Ctrl.Dispose()
            End While
            MyFlawLayoutPanel.Controls.Clear()
    Ou je ne sais quoi d'autre...

    Rq : le For Each est à bannir quand on ne peut pas faire de supression dans un For Each, de plus le Dispose semble supprimer le controle de la collection.

    Bon c'est barbar je le reconnais, mais je suis un peu dans le flou sur ce coup là. Si qq c'est déjà retrouvé confronter à ce pb a un trouvé une solution efficasse je suis preneur !!!

    Merci

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    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 204
    Par défaut
    à priori les controls t'as pas besoin de les disposer, sauf si tu en as plus besoin et que tu fermes pas la feuille
    quand une form est disposé, elle appelle dispose sur tous ses controles, qui appellent dispose sur tous leurs controles etc...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 154
    Par défaut
    Je n'ai plus besoin des controles contenu dans le Flow mais j'ai encore besoin du Flow... Le Dispose sur les PictureBox me semble innévitable quand même.

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    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 204
    Par défaut
    dans ce cas là t'as le droit de les disposer
    par contre moi j'aurais fait un for each

    du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for each ctr in panel
      panel.controls.remove(ctr)
      ctr.dispose
    next
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 154
    Par défaut
    Oui le dispose me semble inévitable par contre tu ne peux pas utiliser un For Each sur une collection si dans la boucle tu fais des suppression, le For Each perd les pédale, ça décale ses index et il sort de la boucle avant d'avoir parcourru tous les controles.

  6. #6
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    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 204
    Par défaut
    ah
    étrange ...
    y me semblait que je l'avais dejà fait ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

Discussions similaires

  1. Disposer des controles sur des lignes
    Par krunch dans le forum jQuery
    Réponses: 5
    Dernier message: 17/03/2013, 23h04
  2. disposer mes controles dynamiquement
    Par TheBlackReverand dans le forum ASP.NET
    Réponses: 2
    Dernier message: 09/02/2009, 13h31
  3. Panel.Controls.Clear : memory leak ?
    Par 29kiteman dans le forum VB.NET
    Réponses: 5
    Dernier message: 23/01/2009, 10h19
  4. ListView->Items->Clear() !!! Qques probl de perf
    Par Nicolas_a69 dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/08/2002, 11h49
  5. Rx Controls Gif animés
    Par toufou dans le forum Composants VCL
    Réponses: 6
    Dernier message: 23/08/2002, 14h09

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