Apres maintes utilisations d'event et d'invoke, je me retrouve avec une erreur qui me laisse perplexe.
Alors voila, j'utilise un gestionnaire d'evenement de mon port serie, déclaré de la facon suivante
La fonction dans laquelle le programme va basculer lors d'un evenement est la suivante: Dll_Rs232_OnDataReceived. J'utilise un invoke sur un System.EventHandler
Code : Sélectionner tout - Visualiser dans une fenêtre à part portserie.DataReceived += new SerialDataReceivedEventHandler(this.Dll_Rs232_OnDataReceived);
Concernant l'invoke, il est utilisé de la facon suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 private void Dll_Rs232_OnDataReceived(object sender, EventArgs e) { OnEvents evenements = new OnEvents(); OnDataRecues.Invoke(this, evenements); }
et la fonction qui le recoit est la suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part m_globale.m_Rs232.OnDataRecues += new System.EventHandler(this.OnTest);
Et la, je me retrouve avec un message d'erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 private void OnTest(object sender, EventArgs e) { textBox10.Text = ((OnEvents)e).DataRecues; }
Apres investigation, le souci vient du faite que je fasse l'invoke à l'interieur de la fonction delegate du à l'évenement SerialDataReceivedEventHandler
Code : Sélectionner tout - Visualiser dans une fenêtre à part Opération inter-threads non valide : le contrôle 'textBox10' a fait l'objet d'un accès à partir d'un thread autre que celui sur lequel il a été créé.
J'ai fait le tour de mes idées, et je m'en remet aux votres.
En vous remerciant pour votre aide.
Cordialement,
Léo V.V
Partager