0

数値を返す (CurrentValue と呼ばれる) メソッドを持つ VB.NET のクラスがあります。数値が変更されたことを示すためにクラスが発生させるイベントもあります。フォームのイベント ハンドラーで、公開されたメソッドを使用してテキスト ボックスを更新します。

このような並べ替え:

Public WithEvents MyClass as New CustomClass   

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

これを実行すると、「Debugger.Runtime.CrossThreadMessagingException」エラーが発生します。何がこれをしている可能性がありますか?テキストボックスを含む同じフォームで MyClass をインスタンス化しています。

MyClass オブジェクトのプロパティも問題なく設定できます。

4

1 に答える 1

0

OK、これが私がしたことです:

フォームでは、イベントを処理するためにこれを持っています:

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

これはうまくいくようです。提案をありがとう。

于 2011-03-29T19:42:55.677 に答える