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.

Foi útil?

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