DOBON.NET DOBON.NETプログラミング掲示板過去ログ

有効でないスレッド間の操作

環境/言語:[winXp, VB.NET2005 Framework2.0]
分類:[.NET]

いつもお世話になっております。

現在VB.NET2005でソフト開発を行っているのですが以下のようなエラーでがて
どのように回避したらよいのかヘルプを参照してもいまいちわかりません。

「有効でないスレッド間の操作
 コントロールが作成されたスレッド以外のスレッドからコントロールがアクセスされました。」

よろしくお願いいたします。
BeginInvokeしてください。
それより、例外の名前自体で検索するとごろごろ出てくるはずです。
BeginInvokeとそれの組み合わせでわかると思います。
■No16259に返信(中博俊さんの記事)
> BeginInvokeしてください。
> それより、例外の名前自体で検索するとごろごろ出てくるはずです。
> BeginInvokeとそれの組み合わせでわかると思います。

早速の回答ありがとうございます。
以下のようにして例外は発生しなくなりました。

    Private Sub SetShiwake(ByVal str As String)

        If Me.InvokeRequired Then
            Me.Invoke(New SetShiwakeInvoker(AddressOf PrivateSetShiwake), New Object() {str})
        Else
            Me.PrivateSetShiwake(str)
        End If

    End Sub

    Public Sub PrivateSetShiwake(ByVal str As String)

        lblShiwakeHost.Text = str

    End Sub


ただ、フォーム上には他にもいくつかコントロールがあるのですが、それらに対しても
同じようにしていかなくてはならないのでしょうか?
異なるスレッドで作成されたコントロールは,すべて呼び出す際にInvokeメソッドかBeginInvokeメソッドを使う必要があると思います。

DOBON.NET | プログラミング道 | プログラミング掲示板