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

VB.NET Discussion :

le contrôle '' a fait l'objet d'un accès à partir d'un thread autre que celui sur lequel il a été créé


Sujet :

VB.NET

  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 71
    Par défaut le contrôle '' a fait l'objet d'un accès à partir d'un thread autre que celui sur lequel il a été créé
    Bonjour,
    J'essaye de modifier une valeur d'une textbox à partir d'un evenement SerialPort1_DataReceived mais j'ai une erreur que j'ai beaucoup de mal à comprendre.

    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub SerialPort1_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
            Dim b0 As Byte
    b0 = SerialPort1.ReadByte()
            udEvOn.Value = b0
    End Sub
    Pouvez vous me dire comment résoudre proprement ce problème ?




    L'exception System.InvalidOperationException n'a pas été gérée
    Message="Opération inter-threads non valide : le contrôle '' a fait l'objet d'un accès à partir d'un thread autre que celui sur lequel il a été créé."
    Source="System.Windows.Forms"

  2. #2
    Membre éclairé Avatar de Cereal123
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2004
    Messages
    414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juin 2004
    Messages : 414
    Par défaut
    Le problème vient que le processus (thread) qui gère l'accès au port série n'est pas le même que le processus principal qui gère l'affichage de ton textbox. Or, un processus ne peut modifier que les objets qui lui appartiennent.

    Pour résoudre ton problème, tu peux t'orienter vers les délégués.

  3. #3
    Membre Expert Avatar de meziantou
    Homme Profil pro
    autre
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : autre
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Par défaut
    Tu peux utiliser la méthode invoke du textbox
    Voici un exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim s As String = "foobar"
            TextBox1.Invoke(New Action(Of String)(AddressOf ChangeValue), s)
     
        End Sub
     
        Private Sub ChangeValue(ByVal value As String)
            TextBox1.Text = value
        End Sub

  4. #4
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 71
    Par défaut
    Merci à vous deux

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

Discussions similaires

  1. Chine : Microsoft fait l'objet d'une enquête antitrust
    Par Stéphane le calme dans le forum Actualités
    Réponses: 501
    Dernier message: 28/11/2014, 14h16
  2. Création de contrôle avec collection d'objet
    Par Acnd31 dans le forum VB.NET
    Réponses: 3
    Dernier message: 05/08/2010, 16h36
  3. Réponses: 2
    Dernier message: 25/11/2009, 13h03
  4. creation d'objet de classe a partir de string
    Par mencaglia dans le forum C++
    Réponses: 1
    Dernier message: 14/03/2006, 09h56
  5. Réponses: 4
    Dernier message: 16/02/2006, 17h45

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