我需要从数据库中检索一组数据,然后用数据填充 ListView。我了解多线程表单控件以及从工作线程更新控件的正确技术。这是困境:
我可能在 ListView 中有几千个条目......而不是调用表单线程来一次更新它们,我想构建一个 ListViewItem 对象的集合并使用 ListView.Items.AddRange(ListViewItemCollection)。
但是,MSDN 文档建议不要创建自己的 ListViewItemCollection(实际上,尝试创建自己的 ListViewItemCollection 会生成空引用错误,因为没有父集)。相反,MS 建议您仅通过 ListView.Items 属性获取 ListViewItemCollection 来使用它。
当然,这是循环推理,不能在工作线程中完成而不产生错误:“跨线程操作无效:控制'ListView'从创建它的线程以外的线程访问。”
我可以使用重载的 AddRange(ListViewItem[]),但是在这个时代,数组相当笨重。
有人建议如何从工作线程向 ListView 添加数千个项目吗?