データベースからデータのセットを取得してから、ListViewにデータを入力する必要があります。マルチスレッドのフォームコントロールと、ワーカースレッドからコントロールを更新するための適切な手法を理解しています。ジレンマは次のとおりです。
ListViewに数千のエントリがある可能性があります...フォームスレッドを呼び出して一度に1つずつ更新するのではなく、ListViewItemオブジェクトのコレクションを作成し、ListView.Items.AddRange(ListViewItemCollection)を使用したいと思います。
ただし、MSDNのドキュメントでは、独自のListViewItemCollectionを作成しないようにアドバイスされています(実際、独自のListViewItemCollectionを作成しようとすると、親セットがないため、null参照エラーが生成されます)。代わりに、MSは、ListView.Itemsプロパティを介して取得することによってのみListViewItemCollectionを操作することをお勧めします。
もちろん、これは循環論法であり、エラーを生成せずにワーカースレッドから実行することはできません:「クロススレッド操作は無効です:コントロール'ListView'は、作成されたスレッド以外のスレッドからアクセスされました。」
オーバーロードされたAddRange(ListViewItem [])を使用することもできますが、この時代では配列はかなり不格好です。
ワーカースレッドからListViewに数千のアイテムを追加する方法を提案している人はいますか?