Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1349 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [C#] exception NullReferenceExc lors de changement d'image de fond

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C#] exception NullReferenceExc lors de changement d'image de fond

n°1736774
ingodidont​trust
Posté le 25-05-2008 à 16:09:20  profilanswer
 

Salut à tous,
 
J'ai programmé un petit soft en c# qui en gros affiche des labels dans des tableaux, qui sont à la base des jpeg stocké en ressources incorporées dans l'executable.
 
Suivant un timer, il remplissent chacun leur tour l'image de fond
 
Le problème c'est que lorsque je change cette image de fond par un simple
 

Code :
  1. diap.ActiveForm.BackgroundImage = WindowsApplication1.Properties.Resources.MonImage;


 
il me renvoie et celà totalement aléatoirement (le temps de fonctionnement du programme avant l'exception est aléatoire), l'exception:
 
NullReferenceException
 
La référence d'objet n'est pas définie à une instance d'un objet.
 
Je vois pas où est le mal étant donné qu'il s'agit d'une image en ressource  :??:  
 
si quelqu'un a une idée elle est plus que la bienvenue


Message édité par ingodidonttrust le 25-05-2008 à 16:09:40
mood
Publicité
Posté le 25-05-2008 à 16:09:20  profilanswer
 

n°1736791
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 25-05-2008 à 17:18:22  profilanswer
 

poste plus de code stp... t'es sur que tu ne fais pas pointer ta référence vers un autre objet ou que tu ne la met pas à null ? ça me parait un peu gros que ta référence soit collectée par le GC sans intervention de ta part


Message édité par Harkonnen le 25-05-2008 à 17:18:31
n°1736826
ingodidont​trust
Posté le 25-05-2008 à 19:11:58  profilanswer
 

Merci pour ta réponse
 
voici la quasi totalité, je n'ai oté que les setvisible en gros...
 
j'ai aussi essayé en créant deux Bitmap dans lesquelles je mets les deux ressources mais c'est pareil
 

Code :
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Text;
  7. using System.Windows.Forms;
  8. namespace WindowsApplication1
  9. {
  10.     public partial class diap : Form
  11.     {
  12.         decimal[] Valtab = new decimal[10];
  13.         decimal[] CValtab = new decimal[10];
  14.         System.Windows.Forms.Timer timer= new System.Windows.Forms.Timer();
  15.         int TimerFini=0;
  16.         System.Drawing.Point Temposition = new System.Drawing.Point();
  17.         Bitmap Page1 = new Bitmap(WindowsApplication1.Properties.Resources.change_pointok);
  18.         Bitmap Page2 = new Bitmap(WindowsApplication1.Properties.Resources.change_point_page1);
  19.         public diap()
  20.         {
  21.             InitializeComponent();
  22.         }
  23.         public void timer_Tick(object sender, EventArgs eArgs)
  24.         {
  25.             if(TimerFini==0)
  26.             {
  27.                 diap.ActiveForm.BackgroundImage = Page2;
  28.                 timer.Interval=10000;
  29.                 TimerFini = 1;
  30.             }
  31.             else
  32.             {
  33.                 if(TimerFini==1)
  34.                 {
  35.                     diap.ActiveForm.BackgroundImage = Page1;
  36.                     timer.Interval=20000;
  37.                     TimerFini = 0;
  38.                 }
  39.             };
  40.             timer.Start();
  41.         }
  42.         private void PlayDiap_Click(object sender, EventArgs e)
  43.         {
  44.             int j = 0;
  45.             while (j != 2)
  46.             {
  47.                 diap.ActiveForm.Size = MaximumSize;
  48.                 diap.ActiveForm.Dock = 0;
  49.                 System.Drawing.Point topleft = new System.Drawing.Point();
  50.                 topleft.X = 0;
  51.                 topleft.Y = 0;
  52.                 diap.ActiveForm.Location = topleft;
  53.                 diap.ActiveForm.FormBorderStyle = 0;
  54.                 j++;
  55.             };
  56.             timer.Enabled = true;
  57.             timer.Tick += new EventHandler(timer_Tick);
  58.             timer.Start();   
  59.         }
  60.     }
  61. }


 

n°1737024
ingodidont​trust
Posté le 26-05-2008 à 09:59:09  profilanswer
 

:)

n°1737039
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 26-05-2008 à 10:36:20  profilanswer
 

peux tu donner la ligne exacte qui te renvoit l'exception stp ?

n°1737218
ingodidont​trust
Posté le 26-05-2008 à 14:34:46  profilanswer
 

diap.ActiveForm.BackgroundImage = Page2;
 
ou
 
diap.ActiveForm.BackgroundImage = Page1;
 
aléatoirement
 
Merci pour ton interêt :) :hello:

n°1737370
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 26-05-2008 à 18:19:11  profilanswer
 

vu l'intervalle que tu donnes à tes timers, il y a de fortes chances que tes références Page1 et Page2 soient ramassées par le Garbage Collector entre 2 ticks du timer. Quel est l'intervalle initial que tu donnes à ton timer ?

n°1737585
ingodidont​trust
Posté le 27-05-2008 à 10:25:03  profilanswer
 

10 et 20 secondes
 
Oui c'est effectivement ce qui semble se passer mais pourquoi cela se produit-il également avec les variable bitmap?
 
Comment puis-je éviter ce phénomène?

n°1746024
ingodidont​trust
Posté le 13-06-2008 à 14:22:54  profilanswer
 

j'ai essayé en passant par une classe assembly et avec un timer d'une seconde c'est toujours pareil :s

n°1746216
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 13-06-2008 à 17:00:49  profilanswer
 

et en debuggant pas à pas, tu n'arrives pas à voir le souci ?


---------------
J'ai un string dans l'array (Paris Hilton)
mood
Publicité
Posté le 13-06-2008 à 17:00:49  profilanswer
 

n°1746774
ingodidont​trust
Posté le 15-06-2008 à 18:25:32  profilanswer
 

En débuggant je constate que en observant les variables locales j'ai au bout d'un temps mes Bitmap page1 et 2 qui passent à null
 
Bizarrement celà se produit systèmatiquement lorsque je switch de fenêtre apparemment sinon cela se produit aléatoirement

n°1749406
MagicBuzz
Posté le 20-06-2008 à 15:45:45  profilanswer
 

Au lieu de passer par Page1 et Page2, ça donne qui si tu fais ça ?
 
diap.ActiveForm.BackgroundImage = WindowsApplication1.Properties.Resources.change_pointok;

n°1771583
ingodidont​trust
Posté le 09-08-2008 à 19:06:58  profilanswer
 

identiquement pareil j'avais ça au départ c'est ce qui me parait d'ailleurs le plus simple


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [C#] exception NullReferenceExc lors de changement d'image de fond

 

Sujets relatifs
Probleme de changement de fond d'écrans avec CSSException dans un constructeur puis traitement dans une autre classe
[C] Appeller une fonctionGénération image au format PDF Haute Def CMJN
Titres avec image fond étirable[C/C++] Problème d'écriture/lecture sur port série.
Récupérer une image d'une RichTextCtrlrequête SQL (C++ builder 2007)
Plus de sujets relatifs à : [C#] exception NullReferenceExc lors de changement d'image de fond


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR