我需要从数据库中检索一组数据,然后用数据填充ListView。我了解多线程表单控件以及从工作线程更新控件的适当技术。问题是:
我可能在列表视图中有几千个条目…我不想调用窗体线程一次更新一个,而是构建一个ListViewItem对象集合,并使用ListView.Items.AddRange(ListViewItemCollection)。
但是,msdn文档建议不要创建自己的listviewitemcollection(实际上,尝试创建自己的listviewitemcollection会生成空引用错误,因为没有父集)。相反,MS建议您只能通过listview.items属性来获取listviewitemcollection。
当然,这是循环推理,在不生成错误的情况下无法从工作线程完成:“跨线程操作无效:从创建它的线程以外的线程访问控件“ListView”。
我可以使用重载的addrange(listviewitem[]),但是数组在今天和现在都相当笨拙。
有人建议如何从工作线程向ListView添加几千个项吗?