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

Windows Forms Discussion :

Bonne utilisation de Dispose


Sujet :

Windows Forms

  1. #1
    Nouveau membre du Club
    Inscrit en
    Septembre 2009
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 53
    Points : 37
    Points
    37
    Par défaut Bonne utilisation de Dispose
    Bonjour,
    Je doit crée une bibliothèque de user control.

    Il est capitale de gérer correctement la mémoire de ces UC afin de posseder une application sans fuite mémoire.

    De la, je me pose une question qui porte sur comment bien utiliser la méthode Dispose.

    Je réaliser ma figure dans la méthode overider "OnPaint" et qu'a la fin de cette méthode je dispose tous mes éléments crée telle que les Pen, les Brush, Les Rectangles ....
    A la fin de la méthode je me retrouve avec une dizaine d'éléments Dispose.

    Le problème est que j'ai lu que la suppression et recréation d'élément est bien plus grave que la non suppression d'éléments.

    Ma question est donc la suivante : qu'elle chance ai-je que l'élément onPaint soit rappelé lors de l'exécution de mon programme, donc que des éléments précédemment supprimer soit recrée pour être supprimer de nouveau.

    Je ne sais pas si j'ai été bien clair car cela reste flou pour moi.

    Ps : je vous met la fin de ma méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    MyBitmap.Dispose();
    myFont.Dispose();
    g.Dispose();
    gr.Dispose();
    ImageBrush.Dispose();
    MyBitmap.Dispose();
    myBrush.Dispose();
    myPen.Dispose();
    myStringFormatAlignement.Dispose();
    FillBrush.Dispose();
    Merci

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    sur windows vista et 7 onpaint est appelé beaucoup moins souvent que sur xp (y a une mise en cache dans directX)

    mais si tu veux un ordre d'idée sur windows xp si tu déplaces une fenetre par dessus celle de ton application, onpaint va etre appelé entre 10 et 1000 fois selon divers facteurs et ce sur un lapse de temps très court !
    (sur vista/7 il ne sera rappelé qu'en cas de changement réel, pas pour du rafraichissement sans raison)


    donc en effet si tu utilise toujours le meme pen, autant le déclarer sur ta classe et le dispose sur le dispose de ta classe
    pour des objets graphiques, tu peux voir facilement les fuites en affichant la colonne "objets GDI" dans le gestionnaire de taches

    sachant qu'en théorie même si tu oublies d'appeler dispose, le GC le fera
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Nouveau membre du Club
    Inscrit en
    Septembre 2009
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 53
    Points : 37
    Points
    37
    Par défaut
    Salut merci pour cette réponse.
    Cela m'éclaire déjà pas mal sur la facon d'utiliser les disposes.

    Dans la plupart du temps il faut donc quand même mieux utiliser le dispose de la classe (enfin d'après le comportement de mon application)

    Possède tu des chiffre concernant les version mobile de Windows en terme de rafraichissement ?

    Merci
    Sam

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    aucune idée, j'ai jamais utilisé le compact framework

    pour les dispose renseigne toi sur le mot clé using qui permet de disposer automatiquement en sortie du bloc même en cas d'erreur
    enfin ca c'est au sein d'un void

    pour une variable de classe, il faut overrider ou implémenter Dispose pour au passage disposer tout ce que tu as (r)ajouté dans la classe
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

Discussions similaires

  1. de la bonne utilisation de const
    Par gangsoleil dans le forum C
    Réponses: 2
    Dernier message: 14/09/2005, 15h44
  2. [Singleton] En faire une bonne utilisation
    Par Koubi dans le forum Langage
    Réponses: 6
    Dernier message: 01/09/2005, 17h52
  3. [C#] La bonne utilisation des WinForms (ouverture-Fermeture)
    Par Harry dans le forum Windows Forms
    Réponses: 28
    Dernier message: 03/08/2005, 11h39
  4. La bonne utilisation de TIBTransaction
    Par jibe74 dans le forum Connexion aux bases de données
    Réponses: 15
    Dernier message: 29/01/2005, 16h18
  5. [Tomcat][sleep]De la bonne utilisation du sleep??
    Par Titom dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 11/01/2005, 10h25

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