我使用dataGridView创建了一个Windows Forms。我还有一个长时间运行的SQL查询,我正在运行一个BackgroundWorker线程来填充静态数据表。用C#Windows窗体中的SQL查询结果填充dataGridView
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;
(结果是我的DataSet),这是需要很长时间的部分。
有没有什么办法可以预先绑定dataGridView,或绑定它在backgroundworker?