1

我需要从数据库中检索一组数据,然后用数据填充 ListView。我了解多线程表单控件以及从工作线程更新控件的正确技术。这是困境:

我可能在 ListView 中有几千个条目......而不是调用表单线程来一次更新它们,我想构建一个 ListViewItem 对象的集合并使用 ListView.Items.AddRange(ListViewItemCollection)。

但是,MSDN 文档建议不要创建自己的 ListViewItemCollection(实际上,尝试创建自己的 ListViewItemCollection 会生成空引用错误,因为没有父集)。相反,MS 建议您仅通过 ListView.Items 属性获取 ListViewItemCollection 来使用它。

当然,这是循环推理,不能在工作线程中完成而不产生错误:“跨线程操作无效:控制'ListView'从创建它的线程以外的线程访问。”

我可以使用重载的 AddRange(ListViewItem[]),但是在这个时代,数组相当笨重。

有人建议如何从工作线程向 ListView 添加数千个项目吗?

4

1 回答 1

2

我想你已经有了答案 - AddRange(ListViewItem[])。如果您发现数组令人反感,您可以使用 List,然后在调用 AddRange 时立即执行 toArray()。

于 2009-10-11T04:00:32.077 回答