Petit thread et invoke vb.net

Fermé
emile789 - 22 mai 2014 à 15:40
Kalissi Messages postés 218 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 15 juillet 2019 - 28 mai 2014 à 22:03
Bonjour,


J'ai une classe principale Main qui lance une classe winform (form1) toute bête avec un textlabel dessus et aussi qui lance dans un thread séparé une classe test qui se contente de lancer un événement, donc jusqu'ici tout va bien.

Dans la classe test je lance un événement et avec un addhandler myevent, address of myFunction je le récupère bien dans ma winform, jusque là tout va bien.

Moi je veux en fonction de cet événement déclenché dans la classe test (thread séparé) modifier simplement le background color du textlabel dans ma winform, donc dans ma winform (classe form1) j'ai fait ceci:


AddHandler myController.myDossierEvent, AddressOf myFunction

Private Sub myFunctionr()
Me.textlabel.background = color.red
End Sub

Et visiblement il n'aime pas car j'ai l'erreur suivante:
control.invoke must be used to interact with controls created on a separate thread vb.net

Donc ma question est: comment en lançant un événement d'un thread B (classe test) récupéré dans un thread A (classe form1) modifier tout bêtement l'apparence de mon contrôle de form1...?

J'a déjà lu la doc de microsoft mais ça ne m'a pas aidé je n'ai pas tout saisi...
Je vous remercie.

1 réponse

Kalissi Messages postés 218 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 15 juillet 2019 20
28 mai 2014 à 22:03
Bonjour,

Quand tu lance ta classe Test, envoir lui le paramètre (Me) qui constitue la
form1.

Tu récupère le (Me) dans ton new de ta classe test :

Private zLaForme as System.Windows.Form

Public Sub New(ByVal pForm as System.Windows.Form)
zLaforme = pForm
End sub

Dans ta Function :


Private Sub myFunctionr()
zLaForme.textlabel.background = color.red
End Sub

K
0