【问题标题】:fill dgv in the background.在后台填充 dgv。
【发布时间】:2013-07-29 13:49:56
【问题描述】:

我有一个由 sp 填充的 dgv,所有内容都是使用向导创建的。因为填充大约需要 10 秒,所以我想在后台使用 backgroundworker。我试过了:

Public Class frmStart
Delegate Sub updateDGV()

Private Sub frmStart_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles MyBase.Load

    BackgroundWorker1.WorkerSupportsCancellation = True
    BackgroundWorker1.RunWorkerAsync()

End Sub

Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, _
ByVal e As System.ComponentModel.DoWorkEventArgs) _
Handles BackgroundWorker1.DoWork

    Me.Invoke(New updateDGV(AddressOf UpdatingForm))

End Sub

Private Sub BackgroundWorker1_RunWorkerCompleted(ByVal sender As Object , _
ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) _
Handles BackgroundWorker1.RunWorkerCompleted

msgbox("Completed")

End Sub

Private Sub UpdatingForm()

    Try
        me.tableadapter.fill(me.dataset.table)
    Catch ex As Exception
        MsgBox("Error during loading the dgv")
    Finally
        BackgroundWorker1.CancelAsync()
    End Try

End Sub
End Class

我只看到 dgv 中的第一行。如何在后台填充我的整个 dgv,代码中的错误在哪里?此外,我希望在填充过程中看到“请等待您的 dgv 被填充”的弹出窗口。知道如何实现吗?

在我修改代码之前,我只有以下行,它是以编程方式创建的。

me.tableadapter.fill(me.dataset.table)

【问题讨论】:

    标签: vb.net datagridview backgroundworker


    【解决方案1】:

    您的新代码与初始版本相同。 Me.Invoke 强制在 UI 线程中执行 UpdatingForm。你可以分成两部分。

    Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
        Me.ProductsTableAdapter.Fill(Me.NorthwindDataSet.Products)
    End Sub
    
    Private Sub BackgroundWorker1_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
        Me.ProductsBindingSource.ResetBindings(False)
    End Sub
    

    请检查Asynchronous Data Loading using TableAdapter with Cancel Feature

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-13
      • 1970-01-01
      • 1970-01-01
      • 2016-07-18
      • 1970-01-01
      • 2020-08-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多