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 回答