我有一個方法,它運行不同的值到數據庫,檢索值並逐行填寫gridview
。長時間運行的過程中填充gridview(刷新)
每次調用都需要一些時間並凍結,直到進程結束。我喜歡在gridview
中顯示值,同時運行方法並且不凍結屏幕。
我嘗試了下面的東西,它仍然凍結屏幕,我看不到在網格上的值,直到過程完成。
我不想使用Application.Doevents
它顯示數據在網格中,如果我在循環中使用它。
任何幫助是讚賞
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Dim t = New Threading.Thread(AddressOf MyWork)
t.Start()
End Sub
Private Sub MyWork()
If Me.InvokeRequired Then
Me.Invoke(New MethodInvoker(AddressOf DoWork))
End If
End Sub
Private Function DoWork() As Boolean
For i As Integer = 1 To 1000000
FillGrid(i)
Next
End Function
我試過那會帶來'cross thread'錯誤。你有一個想法,我怎麼能從上面的情況轉變爲背景工作者? –
@huMptyduMpty你能告訴我們你做了什麼來得到這個錯誤嗎?你可能在錯誤的方法(線程)中調用UI線程。 – Styxxy
@huMptyduMpty我用一個例子更新了我的答案。 – Mash