Raiseevent déclenche un «débogueur.runtime.crossthreadMessagingException»

StackOverflow https://stackoverflow.com/questions/5477208

  •  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.

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top