Я пытаюсь обновить DataGridView через делегата. Это часть простого приложения, но исходный запрос занимает 4-5 секунд для генерации. Я хочу, чтобы FillSchema построил DataGridView, чтобы приложение быстро запускалось, а затем обновляло данные. Это мой первый набег на делегатов, поэтому всякая критика приветствуется.Загрузить DataGridView через делегата
Private Sub LoadGrid(ByVal loadType As String)
StringBuild()
If loadType = "Schema" Then
da.FillSchema(ds, SchemaType.Source, "Requests")
Else
da.Fill(ds, "Requests")
End If
End Sub
Private Sub LoadGridAsync()
Dim del As New delLoadGrid(AddressOf LoadGrid)
Dim cb As New AsyncCallback(AddressOf LoadGridCallback)
Dim result As IAsyncResult
result = del.BeginInvoke("Full", cb, del)
End Sub
Private Sub LoadGridCallback(ByVal result As IAsyncResult)
Dim delS As delLoadGrid
Dim delR As New delRefreshGrid(AddressOf RefreshGrid)
delS = CType(result.AsyncState, delLoadGrid)
delS.EndInvoke(result)
Invoke(delR)
End Sub
Private Sub RefreshGrid()
dgvSign.Update()
End Sub
Я могу отлаживать отпечаток в Sub RefreshGrid, и он определенно срабатывает. Любые идеи о том, почему он не обновляется?
Datagrid привязан к таблице DataSource. Обновление отлично работает, если я не использую вышеуказанное, чтобы вызвать LoadGrid в качестве делегата. Я добавил обновление, которое мне нужно было перерисовать в функции обратного вызова. – Jesse
Работает ли это, если вы перегрузите dgvSign в RefreshGrid? Например: dgvSign.DataSource = Nothing, а затем dgvSign.DataSource = [данные] –
Это полностью сработало! Большое спасибо Джошуа. – Jesse