【发布时间】:2011-05-27 04:15:41
【问题描述】:
我创建了一个Windows Forms,上面有一个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;
}
这工作得很好。当我去运行查询时,UI 保持响应,因为结果是在后台生成的......但是,当需要在我的 dataGridView 中显示结果时,如果它是大量数据,则窗口会冻结。如果我让它坐一会儿,最终它会完成。在我的 RunWorkerCompleted 回调函数中,我调用
dataGridView1.DataSource = results;(结果是我的数据集)这是需要很长时间的部分。
有什么方法可以预先绑定dataGridView,或者在后台绑定它?
【问题讨论】:
标签: c# sql datagridview backgroundworker