我搜索过该网站,发现了类似的主题,但我的问题是解释/解决方案目前还不在我的技术理解之内。
我刚刚注意到Visual Studio中的“后台工作者”,我正在使用它来登录我的数据库并保持UI功能(GIF图像显示加载等)。
我遇到的问题是,一旦登录完成,我将更新标签以说“登录完成”等。
我收到错误“交叉线程操作无效”
如果可能的话,有人可以告诉我一种可以通过后台工作者更新控件的方法,或者提供一个我可以用作资源的源吗?
之前我从未使用多线程,我理解问题的原因,但我不知道如何解决它。
谢谢你的时间!
汤姆
答案 0 :(得分:1)
您必须在BackgroundWorker
和ProgressChanged
事件的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。