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 :

[C# Threads] Remplir listbox


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de PoZZyX
    Inscrit en
    Août 2005
    Messages
    426
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 426
    Par défaut [C# Threads] Remplir listbox
    Hello,

    J'ai un programme assez simple et j'aimerais qu'il note plus ou moins ce qu'il fait dans une listbox. Le problème, c'est que j'ai certaines action à noter qui se font depius des fonctions "principales", et d'autres dans des threads. J'ai créé un simple fonction pour pouvoir l'appeler depuis "partout" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    private void debug(string text)
    {
         this.lst_debug.Items.Add(DateTime.Now + " : " + text);
    }
    Le problème, comme vous le voyez venir, c'est que depuis les threads il ne m'autorise pas a ajouter des éléments dans la listbox et m'affiche un joli blabla comme quoi l'interthread c'est mal.

    Y-a-t'il un moyen de corriger cela ???

    Merci d'avance

    PoZZyX

  2. #2
    Rédacteur

    Avatar de Jérôme Lambert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 451
    Par défaut
    Appeler un délégué via la méthode Invoke afin de donner la main au thread principal de la fenêtre.

    Si tu ne vois pas de quoi je parle, n'hésite pas.

  3. #3
    Membre éclairé Avatar de PoZZyX
    Inscrit en
    Août 2005
    Messages
    426
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 426
    Par défaut
    je suis un peu un programmeur du dimanche en c#, enfin un bidouilleur (du moins pour le moment). Effectivement je ne comprend pas trop ta réponse, ça doit venir de ma façon d'apprendre le c# par des essais

    En tout cas merci pour ta rapidité de réaction

  4. #4
    Membre éclairé Avatar de PoZZyX
    Inscrit en
    Août 2005
    Messages
    426
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 426
    Par défaut
    En voyant un de tes tuto je suis passé à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    delegate void ajoute_ligne(string text);
    ajoute_ligne debug = delegate(string text)
    {
         this.lst_debug.Items.Add(DateTime.Now + " : " + text);
    };
    Bon je sais pas si le principe est juste mais avec ça le problème c'est qu'il ne m'autorise plus le this. et je ne sais pas comment atteindre ma listbox

  5. #5
    Rédacteur

    Avatar de Jérôme Lambert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 451
    Par défaut
    Ah tu as trouvé tout seul

    Apparement, y a une erreur dans la méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ajoute_ligne debug = delegate(string text)
    {
         this.lst_debug.Items.Add(DateTime.Now + " : " + text);
    };
    Par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void ajoute_ligne(string text)
    {
         this.lst_debug.Items.Add(DateTime.Now + " : " + text);
    };

  6. #6
    Membre éclairé Avatar de PoZZyX
    Inscrit en
    Août 2005
    Messages
    426
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 426
    Par défaut
    lol la je vois plus du tout, je dois mettre ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    delegate void ajoute_ligne(string text);
    void ajoute_ligne(string text)
    {
          this.lst_debug.Items.Add(DateTime.Now + " : " + text);
    };
    et ça me fait une erreur.

    ou je dois enlever la ligne delegate et ça revient au problème initial.

    je sais je dois etre casse pieds mais je comprend pas :S

    merci de ton aide

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

Discussions similaires

  1. comment remplir listbox
    Par sihame23 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 22/07/2008, 15h42
  2. Remplir Listbox au démarrage
    Par Petit Ecolier dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/08/2007, 09h24
  3. remplir listbox bdd
    Par lesafir dans le forum ASP.NET
    Réponses: 8
    Dernier message: 21/06/2007, 17h23
  4. Remplir listbox sur base d'une autre listbox
    Par jujujulien dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 18/05/2007, 08h46
  5. pb remplir Listbox dynamique
    Par maniolo dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 10/08/2006, 18h50

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