使用后台工作程序更新控件(VB.NET)

时间:2012-08-15 17:57:06

标签: vb.net multithreading backgroundworker

我搜索过该网站,发现了类似的主题,但我的问题是解释/解决方案目前还不在我的技术理解之内。

我刚刚注意到Visual Studio中的“后台工作者”,我正在使用它来登录我的数据库并保持UI功能(GIF图像显示加载等)。

我遇到的问题是,一旦登录完成,我将更新标签以说“登录完成”等。

我收到错误“交叉线程操作无效”

如果可能的话,有人可以告诉我一种可以通过后台工作者更新控件的方法,或者提供一个我可以用作资源的源吗?

之前我从未使用多线程,我理解问题的原因,但我不知道如何解决它。

谢谢你的时间!

汤姆

1 个答案:

答案 0 :(得分:1)

您必须在BackgroundWorkerProgressChanged事件的RunWorkerCompleted事件处理程序中更新您的显示内容。这将消除您遇到的跨线程问题。

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