RaiseEvent attiva un "debugger.runtime.crocrossthreadmessagingexcetion"
-
14-11-2019 - |
Domanda
Ho una classe in vb.net che ha un metodo (chiamato CurrentValue) che restituisce un numero.C'è anche un evento che la classe solleva per indicare che il numero è cambiato.Nel gestore di eventi sul mio modulo, aggiorno una casella di testo usando il metodo esposto.
Sort da questo:
Public WithEvents MyClass as New CustomClass
Private Sub MyClass_DataChanged() Handles MyClass.DataChanged
Text1.Text = MyClass.CurrentValue
End Sub
.
Quando eseguo questo ottengo un errore "Debugger.Runtime.CrossthreadMessAgeExcetion".Cosa potrebbe fare questo?Sto istanziando myclass nella stessa forma che contiene la casella di testo.
Posso anche impostare le proprietà dell'oggetto MyClass senza problemi.
Soluzione
OK, ecco cosa ho fatto:
Nel modulo ho questo per gestire l'evento:
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
.
Questo sembra funzionare.Grazie per il suggerimento.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow