1

サイトを検索して同様のトピックを見つけましたが、私の問題は、説明/解決策が現時点での私の技術的理解を少し超えていることです。

Visual Studioの「バックグラウンドワーカー」に気付いたばかりで、それを使用してデータベースにログインし、UIを機能させ続けています(読み込みを示すGIF画像など)。

私が抱えている問題は、ログインが完了すると、「ログイン完了」などのラベルを更新していることです。

「クロススレッド操作が無効です」というエラーが発生します

可能であれば、バックグラウンドワーカーを介してコントロールを更新する方法、またはリソースとして使用できるソースを提供する方法を教えてもらえますか?

私はこれまでマルチスレッドを使用したことがなく、問題の理由は理解していますが、回避方法がわかりません。

御時間ありがとうございます!

トム

4

1 に答える 1

1

およびイベントのBackgroundWorkerイベントハンドラーで表示を更新する必要があります。これにより、発生しているクロススレッドの問題が解消されます。ProgressChangedRunWorkerCompleted

Private Sub backgroundWorker1_RunWorkerCompleted(ByVal sender As System.Object, _
ByVal e As RunWorkerCompletedEventArgs) Handles backgroundWorker1.RunWorkerCompleted
    If e.Cancelled = True Then
        resultLabel.Text = "Canceled!"
    ElseIf e.Error IsNot Nothing Then
        resultLabel.Text = "Error: " & e.Error.Message
    Else
        resultLabel.Text = "Done!"
    End If
End Sub

http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx#Y2497

于 2012-08-15T18:00:50.637 に答える