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

C# Discussion :

Libération ressource mal faite [Débutant]


Sujet :

C#

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 29
    Points : 20
    Points
    20
    Par défaut Libération ressource mal faite
    Bonjour

    J'utilise slimDx pour un rendu que je veux sauvegarder dans un jpg.

    using (Surface sSurf = device.GetBackBuffer(0, 0))
    {
    Surface.t(sSurf, "d3_tmp.jpg", ImageFileFormat.Jpg);
    }
    Bitmap BmpQSD = new Bitmap("d3_tmp.jpg");
    BmpX = (Bitmap)BmpQSD.Clone();
    BmpQSD.Dispose(); BmpQSD = null;

    sa marche le 1er passage
    mais ensuite sa plante en disant que la ressource n'a pas été libéré

    quelqu'un connait la solution pour libérer une ressource
    je pensais que BmpQSD.Dispose(); suffisait!

    là je bloque !

    merci à celui qui peut m'aider

    jean-luc

  2. #2
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 196
    Points : 197
    Points
    197
    Par défaut
    es-tu sur que tu as besoin de car tu as un dispose juste avant?

  3. #3
    Membre éclairé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2011
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2011
    Messages : 610
    Points : 713
    Points
    713
    Par défaut
    Salut,

    J'approuve Patmatt44.
    En ce qui concerne l'erreur, Regarde si BmpX est bien relâché dans la suite de ton code.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 29
    Points : 20
    Points
    20
    Par défaut
    Quoi de plus que BmpX.Dispose();

  5. #5
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 196
    Points : 197
    Points
    197
    Par défaut
    justement, tu fais un dispose, as-tu bien besoin de faire . Est-ce que ce n'est pas ça qui fait planté ton appli?

  6. #6
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 29
    Points : 20
    Points
    20
    Par défaut
    J'ai enlever le dispose mais sa ne regle rien

  7. #7
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 29
    Points : 20
    Points
    20
    Par défaut
    ma question est comment libérer une ressource Bitmap si ce n'est pas un Dispose.

    la je fais un load d'une bitmap depuis un fichier sur disque
    puis je fais un Dispose
    mais la ressource est toujours lié au fichier disque

    si je fais

    Bitmap BmpSource = new Bitmap("toto.jpg");
    ...
    BmpSource.Dispose();

    puis j'essaye de recréer l'image "toto.jpg"
    il me dit que la ressource n'est pas libérée !

    voilà mon problème

  8. #8
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 196
    Points : 197
    Points
    197
    Par défaut
    Citation Envoyé par zan974 Voir le message
    J'ai enlever le dispose mais sa ne regle rien
    Si tu lis pas correctement, on va pas beaucoup avancer. C'est pas le dispose que tu dois enlever, c'est .
    J'espère que ça résoudra ton problème.
    Sinon, que cherches-tu à faire?

  9. #9
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    269
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 269
    Points : 460
    Points
    460
    Par défaut
    Bonjour,

    Citation Envoyé par zan974 Voir le message
    si je fais

    Bitmap BmpSource = new Bitmap("toto.jpg");
    ...
    BmpSource.Dispose();

    puis j'essaye de recréer l'image "toto.jpg"
    il me dit que la ressource n'est pas libérée !

    voilà mon problème
    Sauf qu'entre temps t'as fait un Clone, plutôt que de faire une copie de l'image. La méthode clone permet de dupliquer les objets, ca veux dire que si ton objet initial a un handle sur un fichier, ton objet cloné aura aussi un handle sur un fichier.
    Crées une copie via les Graphics.

  10. #10
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 196
    Points : 197
    Points
    197
    Par défaut
    en effet, j'avais pas pensé à ça aussi^^, mais faudrait savoir à quoi lui sert le clone de l'image!!

  11. #11
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 29
    Points : 20
    Points
    20
    Par défaut
    Oui effectivement j'avais mal lu
    je test - désolé

    sinon le Clone d'une image c'était justement pour pas copier juste la référence de l'image mais l'image elle même.
    enfin c'est ce que je croyais

    je vous tiens au courant pour le BmpX = null;
    mais pourquoi sa poserais des problèmes ?
    enfin je test et vous tiens au courant

    merci pour votre patience

  12. #12
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 196
    Points : 197
    Points
    197
    Par défaut
    dans ce cas, je te conseil de faire comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Image img = Image.FromFile("LeCheminATonImage");
    Image i = new Bitmap(img);
    img.Dispose();
    là, je pense que ça ira

  13. #13
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 29
    Points : 20
    Points
    20
    Par défaut
    Merci !

    je vous explique - il fallait enlever le BmpSource = null;

    en effet - merci pour avoir insister dans cette voie

    mais alors pourquoi ?

    si quelqu'un à une réponse.

    sinon un grand merci à vous

  14. #14
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 196
    Points : 197
    Points
    197
    Par défaut
    car tu réassigne une source à ton image^^

  15. #15
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 29
    Points : 20
    Points
    20
    Par défaut
    Patmat44
    t'as solution est bonne mais trop lente pour moi
    voilà pourquoi je passe par les surfaces
    sa permet d'aller plus vite

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

Discussions similaires

  1. fonction mal faite ?
    Par dragonno dans le forum Débuter
    Réponses: 18
    Dernier message: 31/01/2009, 12h56
  2. Classement des nombre Mal fait
    Par kiminfor dans le forum Débuter
    Réponses: 10
    Dernier message: 06/09/2008, 13h42
  3. jointure mal faite ?
    Par afrodje dans le forum Langage SQL
    Réponses: 2
    Dernier message: 05/10/2007, 15h17
  4. Affichage tableau mal fait par firefox
    Par jolivier dans le forum Mise en page CSS
    Réponses: 9
    Dernier message: 13/06/2007, 22h23
  5. Filtre mal fait
    Par Jaimelot dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 15/03/2007, 18h38

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