Pau*_*els 5 c# multithreading backgroundworker
我试图使用后台工作程序,以便从数据库中检索大量数据,而不会拖延主线程.这看起来效果很好,除了在更新UI时,更新会冻结屏幕.相关代码如下:
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();
}
Run Code Online (Sandbox Code Playgroud)
更新大约需要2到3秒,此时屏幕已锁定.我意识到只有主线程可以更新屏幕,但是是否可以以某种方式将这些数据加载到内存中(在后台线程或列表视图的其他实例或其他东西中)然后只显示它?我想要发生的只是让程序简单地刷新数据而不占用主线程中的时间.