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

使用后台工作程序(VB.NET)更新控件,vb.net,multithreading,backgroundworker,Vb.net,Multithreading,Backgroundworker,我搜索了这个网站,发现了类似的主题,但我的问题是,目前的解释/解决方案有点超出了我的技术理解 我刚刚注意到VisualStudio中有一个“后台工作人员”,我正在使用它登录到我的数据库并保持UI的功能(GIF图像显示加载等) 我遇到的问题是,一旦登录完成,我就会更新一个标签,说“登录完成”等等 我收到一个错误“跨线程操作无效” 如果可能的话,有谁能告诉我一种通过后台工作程序更新控件的方法,或者提供一个可以用作资源的源代码 我以前从未使用过多线程,我理解问题的原因,但我不知道如何解决它 谢谢你的时

我搜索了这个网站,发现了类似的主题,但我的问题是,目前的解释/解决方案有点超出了我的技术理解

我刚刚注意到VisualStudio中有一个“后台工作人员”,我正在使用它登录到我的数据库并保持UI的功能(GIF图像显示加载等)

我遇到的问题是,一旦登录完成,我就会更新一个标签,说“登录完成”等等

我收到一个错误“跨线程操作无效”

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

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

谢谢你的时间


Tom

您必须更新
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

您必须更新
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

谢谢,我尝试了改变进度的方法,但这似乎只适用于进度控制,因为它需要一个百分比。正如你和Larstech所说,runworker事件似乎对我有效。我正在用一个值更新一个变量,在RunWorkerCompleted完成时,我将该值分配给控件。谢谢你们两位的帮助!谢谢,我尝试了改变进度的方法,但这似乎只适用于进度控制,因为它需要一个百分比。正如你和Larstech所说,runworker事件似乎对我有效。我正在用一个值更新一个变量,在RunWorkerCompleted完成时,我将该值分配给控件。谢谢你们两位的帮助!