使用来自 C# Windows 窗体中的 SQL 查询的大量结果填充 dataGridView

Ste*_*ich 4 c# sql datagridview backgroundworker

我有一个Windows 窗体,上面有一个 dataGridView。我还有一个长时间运行的 SQL 查询,我在BackgroundWorker线程中运行它来填充静态数据表。

private void RunQuery_DoWork(object sender, DoWorkEventArgs e)
{
    OdbcDataAdapter adapter = new OdbcDataAdapter(longRunningSQLQuery, datasourcename);
    adapter.Fill(results);
}

private void RunQuery_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
    dataGridView1.DataSource = results;
}
Run Code Online (Sandbox Code Playgroud)

这工作得很好。当我去运行查询时,UI 保持响应,因为结果是在后台生成的......但是,当需要在我的 dataGridView 中显示结果时,如果它是大量数据,则窗口会冻结。如果我让它坐一会儿,最终它会完成。在我的 RunWorkerCompleted 回调函数中,我调用 dataGridView1.DataSource = results;(结果是我的数据集),这是需要很长时间的部分。

有什么办法可以预先绑定dataGridView,或者在后台工作人员中绑定它?

Run*_*CMD 5

如果使用数据网格的虚拟模式,则仅加载显示的行。否则,将加载所有行。

http://msdn.microsoft.com/en-us/library/2b177d6d.aspx