Erreur GDI+ N° "-2147467259"

Signaler
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
-
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
-
Salut, voilà j'ai un petit problème enfinun gros ça dépend comment que je pourrait le résoudre surtout. :)

J'ai cette ligne de code :

private
Icon getIco(
icoNumber numberInList){

return
Icon.FromHandle(
new System.Drawing.
Bitmap(iconeList.Images[(
int)numberInList]).GetHicon());}

Elle retourne une une icône à partir d'un contrôle ImageList, or à un moment t que je ne peux déterminé car c'est aléatoire, le prog plante sur cette ligne en me disant erreur générique de GDI+ : "-2147467259"

J'ai regarder un peu partout mais je ne vois pas comment résoudre ce problème.

Quelqu'un aurait t'il une idée d'où viens le pb ? j'ai réussit à déterminer que cela viens du
"new ...Bitmap....GetHicon()", car en enlevant le getHicon dans l'espion express l'image existe, alors que lorsque je débug avec le GetHicon ça me met le même message d'erreur.

Merci
Chris...
Web : Firstruner
A voir également:

9 réponses

Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
49
Bonjour,
Le plantage se fait-il tjrs sur le même fichier?
Par exemple, une image avec extension .gif ?

<hr />
-My Blog-
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
14
Salut,

J'ai ajouter le contrôle "ImageList" à la WinForm, puis avec les outils de la fenêtre propriétés j'ai ajouter les images provenant de fichier icônes (fichier ICO créer avec VS).

Donc oui tjs sur les mêmes Item de mon ImageList parfois le 1, parfois le 3, etc...

Chris...
Web : Firstruner
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
49
Je viens de faire qqe testes chez moi, ça marche sans soucis.
Sans pouvoir reproduire le problème, je ne sais pas trop comment t'aider...

Lorsque l'erreur se produit, il faudrait regarder sur quel Bitmap cela c'est produit et inspecter les propriétés de ce bitmap pour voir s'il n'a pas une particularité.
Pas d'autres idées pour l'instant...

<hr />
-My Blog-
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
14
Merci bidou,

Je suis également en pleine phase de test pour voir si le temps à 1 ou 2 sec près avant plantage est régulier, j'ai également tester les 7 images de mon ImageList et pour le moment aucun problème.

Ces icônes doivent mettre régulièrement à jour la tray icône, peut-être cela viens t'il de l'écran de veille... car quand la dernière fois je suis revenu sur le pc l'écran de veille était affiché, pour les autres fois je ne me souviens pas :) (écran de veille : Blank.scr)

Chris...
Web : Firstruner
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
14
Je re,

Alors j'ai fini par déterminer un premier point ! Le moment du plantage se fait toutjours après 27min et 36sec. à ce moment là plus aucune image de l'imagelist n'est disponible elle me retourne toutes la même erreur. Pas d'idée ??? Est-ce que ma ligne appeler très souvent peux générer une surcharge de Handles ? est-ce que le new placer ainsi est bien ou dois-je plutôt instancier l'image Bitmap et ensuite appeler le Dispose voir même forcer le garbage collector à vider les trucs en trop ?

Cela pourrait venir de ça ?

Chris...
Web : Firstruner
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
34
Salut, apparemment tu dois utiliser DestroyIcon.
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
14
Merci, j'ai été voir cette fameuse fonction, mais par contre, hmm comment dire à quel moment je dois l'insérer selon ma fonction suivante ? (désoler pour ma bétisité) Car ça plante au niveau du GetHicon et faut bien que je récupère l'icône avant de la détruire.

private
Icon getIco(
icoNumber numberInList){

try{

Bitmap nIcon =
new System.Drawing.
Bitmap(iconeList.Images[(
int)numberInList]);

return
Icon.FromHandle(nIcon.GetHicon());}

catch

{t2 = System.

DateTime.Now;

return
null;}

}

Chris...
Web : Firstruner
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
34
Pas dans cette fontion, mais une fois que tu n'as plus besoin de l'icone. Ca ne suffit pas d'appeler Dispose sur la classe Icon.
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
14
Merci pour l'info très utile ;)

J'ai finalement revus toute la partie de code qui appelais cette fonction, et j'en suis arrivé à diviser par +60 son appels en ne l'appeleant que lorsque cela est nécessaire.

désormais je continu ma phase de test en espérant que tout va tenir +48h :)



Chris...


Web :
Firstruner