2014-12-09 65 views
1

我目前有一個功能,用數據填充列表視圖。該函數獲取傳遞參數。如何將參數傳遞給後臺工作人員?

我現在想要在與主UI線程不同的線程中填充listview。不過,我有點不確定如何將參數傳遞給線程。

+1

您不能在不同的線程中填充ListView。 – 2014-12-09 13:38:18

+0

如果我不能填充列表視圖,那麼我將如何將我的功能轉變爲後臺工作人員? – Mattigins 2014-12-09 13:52:48

+0

收集要在工作線程的列表視圖中顯示的數據。綁定或填充列表視圖需要在RunWorkerCompleted事件處理程序中發生。如果這需要太長的時間,那麼你的用戶界面就會大打折扣,顯示包含數千個項目的列表是非常用戶友好的。 – 2014-12-09 14:10:52

回答

1

它必須作爲參數(對象)通過RunWorkAsync傳遞。請務必將其轉換爲任何你傳入。

Private Sub frm_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load 
    bgwThread.RunWorkerAsync('your parameters here') 

    'e.g.: 
    Dim sTemp As String = "Hello" 
    bgwThread.RunWorkerAsync(sTemp) 
End Sub 

Private Sub bgWorker_DoWork(ByVal sender As Object, ByVal e As DoWorkEventArgs) Handles bgwThread.DoWork 
    Dim sThisIsYourParameter As String = CStr(e.Argument) 

    '... 
    DoStuff() 
End Sub 

雖然漢斯·上面說的,你可以不填充另一線程中的ListView。這只是「如何將參數傳遞給背景工作者」。

+0

而且該代碼可能會生成跨線程錯誤,因爲您正在UI線程以外的線程上執行UI工作(MessageBox)。 – 2014-12-09 15:25:05

+0

哦,是的。謝謝。我只是把它作爲一個例子。 – Keith 2014-12-09 15:41:12