none
Cross-thread operation not valid && serialport RRS feed

  • Question

  • Bonjour,
       
    J'ai commencé le dev en .NET et C# il y a 1 semaine à peine.

    Je suis face à unprobleme est classique, mais dans un contexte different.

    J'ai une frmMain qui contient une FrmTerminal : cette frmTerminal gere la liaison RS232 avec un microcontrolleur.

    D'un point de vue conceptuel, la gestion de la communication RS est reservé à frmTerminal, tandis que frmMain ne fait que demander un envoi de donnees / recevoir des données.

    On se retrouve donc dans le cas classique d'echange de données entre 2 applis : une solution est donnée par exemple ici http://faqcsharp.developpez.com/?page=form#form_meth .
    On peut encore utiliser les delegate et invoke.

    test basique
    Si je gere l'echange via un bouton classique, pas de probleme. 
    delegate, invoke, .... trop facile

    automatisation
    Pour automatiser la communication, je decide d'utiliser l'evenement OnDataReceived du composant serialport (frmTerminal).
    Je lui demande donc l'execution de ma methode de traitement précédente, qui fonctionne, et ....
             Cross-thread operation not valid    

    Je ne comprend pas d'ou provient la difference entre le cas basique et l'automatisation.

    Merci de votre aide.

    Vincent

    jeudi 19 avril 2007 15:23

Réponses

  • D'habitude, lorsque tu as un  Cross-thread operation not valid c'est qu'un objet créé dans un autre thread est accéder dans un thread différent que celui qui la créé. De façon plus spécifique (car j'ai déjà eu ce problème), c'est que le thread créé essaie de communiquer avec l'objet Form créé dans le thread principale, et que l'appel à un objet contrôle d'un autre thread créé cet erreur.

     

    Regarde tes threads en mode débug voir si tu es dans le même thread.

     

    jeudi 19 avril 2007 17:19
    Modérateur