2012-08-15 41 views
1

我已經搜索了該網站並找到了類似的主題,但是我的問題是解釋/解決方案目前超出了我的技術理解範圍。使用後臺工作者(VB.NET)更新控件

我只注意到Visual Studio中的「後臺工作者」,我正在使用它來登錄到我的數據庫並保持UI功能(GIF圖像顯示加載等)。我有

問題是,一旦登錄完成我更新標籤說「登錄完成」等

我得到一個錯誤「跨線程操作無效」

如果可能的話,有人可以告訴我一種方法,我可以通過後臺工作人員更新控件,或提供一個我可以用作資源的源?

我從來沒有使用多線程之前,我明白問題的原因,但我沒有看到如何解決它。

謝謝你的時間!

湯姆

+0

http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx#Y2497 – 2012-08-15 17:59:03

回答

1

你必須更新你在爲ProgressChangedRunWorkerCompleted事件BackgroundWorker事件處理程序的顯示。這將消除您遇到的交叉線程問題。

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

+0

謝謝,我試圖改變進度的方法,但這似乎只適用於進度控制我猜測爲它要求一個百分比。就像你和Larstech建議的那樣,runworker事件似乎對我很有用。我正在用值更新一個變量,並且在RunWorkerCompleted上,我將值賦給控件。感謝您的幫助! – 2012-08-15 18:07:55