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 :

Petit problème avec invoke


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 8
    Par défaut Petit problème avec invoke
    Bonjour,

    je m'essaye actuellement à l'utilisation des control.invoke, dans le but de créer une picturebox et de l'ajouter dans un panel.
    Jusque là tout va bien (merci la FAQ developpez.com) mon image s'affiche, même depuis un autre thread.

    Par contre j'ai une erreur "La référence d'objet n'est pas définie à une instance d'un objet.", que je ne comprend pas car mon panel existe, et ma fontion déléguée aussi.
    Cette erreur ne survient pas toujours au même moment à l'execution.



    le bout de code où a lieu l'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if (panel_pile.InvokeRequired)
    {
        panel_pile.Invoke(deleg_pile);  <--- erreur
    }
    else
    {
        _Afficher_Pile();
    }
    "panel_pile" est mon panel et "deleg_pile" mon delegué.
    _Afficher_pile est ma fonction d'affichage de ma picturebox dans mon panel, également appelée par mon délégué.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    private delegate void Afficher_pile_delegate();
    private Afficher_pile_delegate deleg_pile;
    Merci d'avance !

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 547
    Par défaut
    Salut,

    avec le code que tu as fourni, le delegué n'est pas instancié. De plus, si ca ne survient pas au meme moment, ca sent bon l'instanciation dans un autre thread qui n'est pas faite à temps.

    Un peu plus de code ne serait pas de refus. =)

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 8
    Par défaut
    Merci pour la réponse et en effet j'oubliais de préciser où j'instanciais le délégué : lors de la création de la form.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public Form1()
    {
           InitializeComponent();            
           deleg_pile = new Afficher_pile_delegate(this._Afficher_Pile);
    }
    L'invoke du _Afficher_pile est appelé à divers moments, en fait à chaque fois que l'image à afficher change (c'est dans le cadre d'un jeu de cartes).
    Cela peut-être dans le thread principal ou non.

Discussions similaires

  1. Petits problèmes avec une CListCtrl
    Par vanitom dans le forum MFC
    Réponses: 2
    Dernier message: 17/11/2005, 11h45
  2. Un petit problème avec pop
    Par Paulinho dans le forum C++
    Réponses: 4
    Dernier message: 13/11/2005, 20h57
  3. Petit problème avec Line Input
    Par GrosQuicK dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/09/2005, 12h47
  4. (Petit ?) problème avec une page contenant du Flash
    Par ologram dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 01/09/2005, 18h45
  5. Petit problème avec SDL
    Par Nyarlathotep dans le forum C
    Réponses: 10
    Dernier message: 01/07/2005, 09h10

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