Une erreur générique s'est produite dans GDI+

Signaler
Messages postés
4
Date d'inscription
dimanche 30 mars 2008
Statut
Membre
Dernière intervention
12 mai 2008
-
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
-
Bonjour,
Ceci est mon premier post et je vous remercie d'avance de votre aide et de votre compétence.
Je suis étudiant et je dois réaliser un projet à l'aide de VS2008 pour faire un mini explorateur d'images (.JPG).
J'ai créé un bouton qui me permet d'enregistrer sur HDD les modifs que j'ai effectué sur mon image (rotation, inverser les couleurs,...) que je visualise avec un pictureBox. Lorsque je clique sur mon bouton, j'ai un message d'erreur (qui n'apparait presque 2 fois sur 3) qui me dit : "L'exception System.Runtime.InteropServices.ExternalException n'a pas été gérée
  Message="Une erreur générique s'est produite dans GDI+."
  Source="System.Drawing" "

Voici l'extrait de code :

    private void BouttonEnregistrer_Click(object sender, EventArgs e)
    {
      pictureBox1.Image.Save(listView1.SelectedItems[0].Name);
    }

Est-ce-que qq'un peut-il m'aider
Merci d'avance de votre aide

Thomas

8 réponses

Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
84
Salut,

Comment ça 2 fois sur 3 ?
Sur 3 clics à la suite tous ne réussissent pas ou on parle de plusieurs essais sur des images distinctes ?

/*
coq
MVP Visual C#
CoqBlog
*/
Messages postés
4
Date d'inscription
dimanche 30 mars 2008
Statut
Membre
Dernière intervention
12 mai 2008

Bonjour,
Merci de votre réponse,
L'erreur appraît de maniere aléatoire, mais le plus souvent c'est lors d'essais sur des images distinctes (si j'ai 3 images dans mon list view, si je fais des modifs sur la 1ere image et que j'enregistre, cela peut fonctionner, si je fais la même chose sur la 2ème : l'exception est générée. J'ai parcouru d'autres forums, et visiblement, le problème vient du fait que j'ecrase le fichier en cours ...
Je n'ai pas encore trouvé de solution à ce problème... Pouvez-vous m'aider ?
MErci

Thomas
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
84
C'est sûr que si le fichier cible est en cours d'utilisation, ça ne risque pas de marcher.
Tu as donc sans doute une instance d'Image conservant un handle sur le fichier en question (instance crée à partir de Image.FromFile par exemple).

/*
coq
MVP Visual C#
CoqBlog
*/
Messages postés
4
Date d'inscription
dimanche 30 mars 2008
Statut
Membre
Dernière intervention
12 mai 2008

Oui, j'utilise la methode Image.FromFile(). Y-a-t'il une solution pour desactiver momentanément cette connexion vers le fichier et ensuite la réactiver lorsque le fichier a ete enregistré ?
Merci d'avance

Thomas
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
84
Détruire l'instance d'Image, mais ça ne t'arranges pas je suppose ;-)
Hmmm, on a déjà abordé le sujet sur ce forum, et on avait donner des solutions.
En gros le principe est d'ouvrir l'image, d'en faire une copie et fermer celle ouverte.

/*
coq
MVP Visual C#
CoqBlog
*/
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
84
Messages postés
4
Date d'inscription
dimanche 30 mars 2008
Statut
Membre
Dernière intervention
12 mai 2008

OK, merci beaucoup Coq, je vais consulter ces pages et je te tiens au courant. Encore mille excuses, j'aurai dû approfondir mes recherchers avant de poster  ma question.

Thomas
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
84
Pas de problème, avec la fameuse "erreur générique" GDI+ :-/

/*
coq
MVP Visual C#
CoqBlog
*/