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 :

"out of memory exception" sur un picturebox[VB 2005.net]


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2004
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 24
    Points : 19
    Points
    19
    Par défaut "out of memory exception" sur un picturebox[VB 2005.net]
    j'ai réalisé une petite application en VB.net 2005 qui consiste a charger toute les minutes une image .png dans un picturebox (je passe par un timer...)
    mais au bout d'une vingtaine d'image je suis "out of memory" comment puis je remedier à ce pb de mémoire??
    voici un bout du code,merci pour vos suggestions++


    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

    Try
    n += 1
    Button1.Text = n
    web = New WebClient
    web.DownloadFile("" & adresse & "", "c:\stokorage\orage(" & n & ").png")
    PictureBox1.Image = Image.FromFile("c:\stokorage\orage(" & n & ").png")
    Catch ex As WebException
    MessageBox.Show("l'acces internet est impossible!")

    Timer1.Enabled = False
    End Try
    End Sub

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Novembre 2002
    Messages : 89
    Points : 108
    Points
    108
    Par défaut
    Toutes les minutes, je suppose que le garbage collector n'a pas le temps de faire le menage et par conséquent tu arrives a saturation.

    Je ne connais pas VB, je suis développeur c#. Mais il doit y avoir une methode .Dispose aussi je pense afin de liberer les ressources.

    Donc rajoute une ligne au début:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    si PictureBox1.Image n'est pas null alors PictureBox1.Image.Dispose()

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2004
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 24
    Points : 19
    Points
    19
    Par défaut suite...
    je l'ai déjà fait mais ça n'améliore que partiellement.......avec:
    If Not IsNothing(PictureBox1.Image) Then PictureBox1.Image.Dispose()

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Novembre 2002
    Messages : 89
    Points : 108
    Points
    108
    Par défaut
    Essaye de forcer le garbage collector:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    System.GC.SuppressFinalize(PictureBox1.Image)

  5. #5
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Citation Envoyé par bootix
    Essaye de forcer le garbage collector:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    System.GC.SuppressFinalize(PictureBox1.Image)
    Non, appeller soit même le passage du GC est là dernière chose à faire !

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Novembre 2002
    Messages : 89
    Points : 108
    Points
    108
    Par défaut
    Je sais bien que c'est peu recommandé, mais apparemment il recharge trop vite ses images pour laisser le temps au garbage collecor de faire le menage. Dans la mesure ou je lui proposer d'appeler le garbage pour finaliser l'objet et non pour lancer une collection, je ne pense pas que ça soit si problèmatique.

  7. #7
    Membre à l'essai
    Inscrit en
    Janvier 2004
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 24
    Points : 19
    Points
    19
    Par défaut suite...
    je ne sais pas......mais toujours est-il que depuis ça semble marcher effectivement.
    Et pour l'instant je n'ai pas constaté d'autres plantages.....
    mais je ne m'explique pas pourquoi ce manque de memoire avec une mauvaise gestion du garbage C lorsque je demande de charger une image toute les minutes dans un picturebox, alors qu'avec une lecture rapide d'une suite d'image et toujours dans le meme picturebox(frequence 2/seconde)là tout se passe sans pb!!!!!(et je peut lire plusieurs centaines d'images à ce rythme..)
    merci pour vos réponses+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. image.fromfile Out Of Memory Exception
    Par jerem7w dans le forum VB.NET
    Réponses: 6
    Dernier message: 10/03/2019, 08h22
  2. Memoire JVM et out of memory exception
    Par aelmalki dans le forum Général Java
    Réponses: 5
    Dernier message: 20/03/2010, 22h58
  3. Out of memory exception
    Par gabdeschenes dans le forum ASP.NET
    Réponses: 7
    Dernier message: 14/05/2009, 17h26
  4. Erreur "Out Of Memory" sur application en VB4
    Par aokiseiichiro dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 18/07/2007, 17h37
  5. Out of memory sur un appel de smtpsend
    Par frangin2003 dans le forum Modules
    Réponses: 1
    Dernier message: 01/06/2006, 14h16

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