Raiseevent déclenche un «débogueur.runtime.crossthreadMessagingException»
-
14-11-2019 - |
Question
J'ai une classe dans VB.NET qui a une méthode (appelée CurrentValue) qui renvoie un nombre. Il y a aussi un événement que la classe augmente pour indiquer que le nombre a changé. Dans le gestionnaire d'événements sur mon formulaire, je met à jour une zone de texte en utilisant la méthode exposée.
Un peu comme ceci:
Public WithEvents MyClass as New CustomClass
Private Sub MyClass_DataChanged() Handles MyClass.DataChanged
Text1.Text = MyClass.CurrentValue
End Sub
Lorsque j'exécute ceci, je reçois une erreur "Debugger.Runtime.crossThreadMessagingException". Que pourrait-il faire cela? Je suis instanciant MyClass sous la même forme qui contient la zone de texte.
Je peux également définir les propriétés de l'objet MyClass sans aucun problème.
La solution
Ok, voici ce que j'ai fait:
Dans la forme, j'ai ceci pour gérer l'événement:
Public Delegate Sub MyClassDataChangedDelegate()
Sub MyClassDataChanged() Handles MyClass.DataChanged
If Me.InvokeRequired Then
Me.Invoke(New MyClassDataChangedDelegate(AddressOf MyClassDataChanged))
Else
Me.Text1.Text = MyClass.CurrentValue
End If
End Sub
Cela semble fonctionner. Merci pour la suggestion.