我有一个返回数百行的SQL查询,我需要把它们添加到一个WinForms的DataGrid的方式,将仍然允许用户查看/滚动DataGrid中的行是添加。在BackgroundWorker的主题更新的DataGrid
目前,我使用BackgroundWorker线程来执行SQL语句并循环遍历DataReader中的行,然后使用Control.BeginInvoke将每个新行传回到UI线程,并将其添加到绑定的DataTable到DataGrid。这并不是真的具有所需的效果(需要一点时间来更新DataGrid,然后在它执行一次更新后,UI变得无响应)。
有没有办法做到我想要的,如果是的话如何?
编辑:我已经添加了一个thread.sleep到工作线程,因为它通过datareader循环,这阻止了UI在第一次更新后无响应,但它仍然没有我希望的那样响应(因为在UI线程中添加一行似乎窃取了焦点,所以滚动有点不安)。
我现在来看看。感谢您的快速回复:) – 2010-01-07 11:39:03
这很好,谢谢! – 2010-01-07 18:29:18