Мне нужно получить набор данных из базы данных, а затем заполнить ListView данными. Я понимаю многопоточные элементы управления форм и правильные методы обновления элементов управления из рабочих потоков. Вот дилемма:
У меня может быть несколько тысяч записей в ListView ... вместо того, чтобы вызывать поток формы для обновления их по одному, я хотел бы создать коллекцию объектов ListViewItem и использовать ListView.Items.AddRange (ListViewItemCollection) .
Однако в документации MSDN не рекомендуется создавать собственную коллекцию ListViewItemCollection (и, действительно, при попытке создать мою собственную коллекцию ListViewItemCollection генерируется ошибка нулевой ссылки, поскольку родительский набор отсутствует). Вместо этого MS рекомендует работать только с ListViewItemCollection, получая его через свойство ListView.Items.
Что, конечно, является циклическим рассуждением и не может быть выполнено из рабочего потока без генерации ошибки: «Недопустимая операция между потоками: доступ к элементу управления ListView осуществляется из потока, отличного от потока, в котором он был создан . "
Я мог бы использовать перегруженный AddRange (ListViewItem []), но массивы довольно неуклюжи в наше время.
У кого-нибудь есть предложения, как добавить несколько тысяч элементов в ListView из рабочего потока?