RaiseEvent запускает "Debugger.Runtime.CrossThreadMessagingException"

У меня есть класс в VB.NET, который имеет метод (называемый CurrentValue), который возвращает число. Существует также событие, которое вызывает класс, чтобы указать, что число изменилось. В обработчике событий в моей форме я обновляю текстовое поле, используя открытый метод.

Вроде как это:

Public WithEvents MyClass as New CustomClass   

Private Sub MyClass_DataChanged() Handles MyClass.DataChanged
    Text1.Text = MyClass.CurrentValue
End Sub

Когда я запускаю это, я получаю ошибку "Debugger.Runtime.CrossThreadMessagingException". Что может делать это? Я создаю экземпляр MyClass в той же форме, которая содержит текстовое поле.

Я также могу без проблем установить свойства объекта MyClass.

1 ответ

Решение

Хорошо, вот что я сделал:

В форме у меня есть это для обработки события:

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

Это похоже на работу. Спасибо за предложение.

Другие вопросы по тегам