如何从VB.Net中的另一个线程更新datagridview单元格

时间:2018-12-18 14:02:06

标签: vb.net multithreading datagridview

我正在尝试使用线程更新UI表单中的DataGridViewCell。在互联网上到处搜索的地方,或多或少地发现他们要求更新数据源,由于某些限制,在某种程度上我无法在此项目中实现该数据源。

下面提供了示例代码来了解我的问题。

我已经在模块中编写了一个Sub,以获取要在gridview中更新的值。

Public Sub GetValues()
    For I as Integer = 0 to N 'N = Row Count of the gridview
        For J as Integer = 0 to M 'M = column count of the gridview
            frmMain.DGV.Rows(I).Cells(J).Value = I * J
        Next
    Next
End Sub

现在,我正在尝试创建一个线程来启动子GetValues,并希望该线程一个接一个地更新我的gridview DGV中的单元格。

Dim T As Threading.Thread = New Threading.Thread(AddressOf Module1.GetValues)
T.Start()

但是它没有工作/正在更新。请帮助

2 个答案:

答案 0 :(得分:0)

使用Me.Invoke()或Me.BeginInvoke()。 第一个立即更新,第二个是异步更新。

Public Sub GetValues()
For I as Integer = 0 to N 'N = Row Count of the gridview
    For J as Integer = 0 to M 'M = column count of the gridview
        Me.BeginInvoke(Sub() frmMain.DGV(J,I).Value = I * J)
    Next
Next
End Sub

答案 1 :(得分:0)

考虑使用BackgroundWorker。这是一个线程进程,您可以使其暂停以将数据从线程传递到主进程。