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.

È stato utile?

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
scroll top