Я пытаюсь использовать фонового работника для извлечения большого объема данных из базы данных без остановки основного потока.Это, кажется, работает хорошо, за исключением того, что когда дело доходит до обновления пользовательского интерфейса, обновление останавливает экран.Соответствующий код выглядит следующим образом:
private void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
lvwTest.BeginUpdate();
lvwTest.Items.Clear();
// Populate the UI
foreach (TestItem ti in testData)
{
ListViewItem lvi = lvwTest.Items.Add(ti.Value1);
lvi.SubItems.Add(ti.Value2);
}
lvwTest.EndUpdate();
}
Обновление занимает около 2–3 секунд, на это время экран блокируется.Я понимаю, что только основной поток может обновлять экран, но возможно ли каким-то образом загрузить эти данные в память (в фоновом потоке или другом экземпляре списка или чего-то еще), а затем просто отобразить его?Все, чего я хочу, это чтобы программа просто обновляла данные, не занимая время в главном потоке.