RaiseEvent aciona uma “Debugger.Runtime.CrossThreadMessagingException”
-
14-11-2019 - |
Pergunta
Tenho uma classe em VB.NET que possui um método (chamado CurrentValue) que retorna um número.Há também um evento que a classe gera para indicar que o número mudou.No manipulador de eventos do meu formulário, atualizo uma caixa de texto usando o método exposto.
Mais ou menos assim:
Public WithEvents MyClass as New CustomClass
Private Sub MyClass_DataChanged() Handles MyClass.DataChanged
Text1.Text = MyClass.CurrentValue
End Sub
Quando executo isso, recebo um erro "Debugger.Runtime.CrossThreadMessagingException".O que poderia estar fazendo isso?Estou instanciando MyClass no mesmo formato que contém a caixa de texto.
Também posso definir propriedades do objeto MyClass sem problemas.
Solução
OK, aqui está o que eu fiz:
No formulário tenho isso para tratar do 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
Isso parece funcionar.Obrigado pela sugestão.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow