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 Embedded .NET Discussion :

Probléme de thread


Sujet :

Windows Embedded .NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 94
    Par défaut Probléme de thread
    Bonjour,

    J'ai un problème de thread. Mon programme communique avec une appareil branché sur ma machine en usb. Après avoir initialisé les paramètres, je lance une fonction (EffectuerOperation) qui démarre le traitement sur mon appareil connecté. Pendant le traitement, l'appareil me renvoie des chaines de caractères que je dois afficher sur l'écran de ma machine. Je dois également pouvoir annuler le traitement, à tout moment, en appuyant sur le bouton annuler.Donc le traitement ne doit pas bloquer l'interface graphique de mon application. Mais je n'arrive pas à afficher, sur l'écran, les chaines de caractères que me renvoie l'appareil lors du traitement lorsque j'utilise les threads.

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    System.Threading.Thread tEffectuerOp;
    delegate void ModifierLabelMessageCallback(string text);
    private ModifierLabelMessageCallback _modifierLabelMessage;
     
    public FormP()
    {
       //on init le delegate à la contruction de la fenetre
       this._modifierLabelMessage = new ModifierLabelMessageCallback(this.ModifierLabelMessage);
    }
     
    //Dans cette fonction on démarre le thread qui lance le traitement sur l'appareil en usb
    public string LancerTraitement()
    {
       //on init le thread
       this.tEffectuerOp = new System.Threading.Thread(new System.Threading.ThreadStart(this.EffectuerOperation));      
       this.tEffectuerOp.Start();
    }
     
    //Fonction du traitement
    public string EffectuerOperation()
    {
       //on fait des trucs avant
       ...
     
       //là on lance le traitement sur l'appareil usb qui, durant ses calculs, nous envoie des infos par la fonction AfficherMessage
       this.usbServer.Demarrer();
     
       //on continue à faire des trucs
       ... 
    }
     
    //Fonction qui permet de récupérer des messages à afficher pour voir l'avancé du traitement sur l'appareil usb.
    public void AfficherMessage(string messageAfficher)
    {
       //Une fois ici, l'invoke ne fait rien. Il reste bloqué. Il ne lance pas la fonction ModifierLabelMessage.
       this.Invoke(_modifierLabelMessage, new object[] {messageAfficher});
     
      //Si je met cette ligne ici :  this.labelMessage.Text = text;
      //J'obtiens une erreur qui me dit que je dois passer par un Control.Invoke.
    }
     
    //Modifie le label sur la fenetre de l'utilisateur.
    public void ModifierLabelMessage(string text)
    {
          this.labelMessage.Text = text;
          this.Refresh();
    }
    Merci pour votre aide.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 94
    Par défaut
    J'ai résolu mon problème en appelant le constructeur de la fenêtre ( FormP )directement dans un thread.

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

Discussions similaires

  1. Problème de thread : Plus de ressources système
    Par OliverSleep dans le forum C++Builder
    Réponses: 17
    Dernier message: 07/02/2006, 15h35
  2. [VB.NET] Problème de Thread
    Par Sadneth dans le forum ASP.NET
    Réponses: 26
    Dernier message: 31/01/2006, 10h12
  3. Problème synchronisation threads
    Par Linio dans le forum Concurrence et multi-thread
    Réponses: 19
    Dernier message: 11/01/2006, 16h57
  4. [MFC] Problème de Threads + Timers
    Par Invité dans le forum MFC
    Réponses: 8
    Dernier message: 30/11/2005, 10h51
  5. [VC++6][DX9] Problème de thread lors d'un blit ...
    Par grandjouff dans le forum DirectX
    Réponses: 2
    Dernier message: 12/06/2003, 22h22

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