【发布时间】:2010-01-07 11:05:17
【问题描述】:
我有一个返回数百行的 SQL 查询,我需要将它们添加到 WinForms DataGrid,在添加行时仍允许用户查看/滚动 DataGrid。
目前,我正在使用 BackgroundWorker 线程执行 SQL 语句并循环遍历 DataReader 中的行,然后使用 Control.BeginInvoke 将每个新行传递回 UI 线程,然后将其添加到绑定到的 DataTable数据网格。这并没有真正达到预期的效果(更新 DataGrid 需要一点时间,然后在更新一次后 UI 变得无响应)。
有没有办法做我想做的事,如果有怎么办?
编辑:我在工作线程中添加了一个 thread.sleep,因为它循环通过数据读取器,这会阻止 UI 在第一次更新后变得无响应,但它仍然没有我希望的响应(滚动有点跳动,因为在 ui 线程中添加一行似乎会窃取焦点)。
【问题讨论】: