【发布时间】:2012-02-05 19:59:43
【问题描述】:
我一直在网上寻找一种方法来做到这一点,但没有成功,所以问题来了。
如何在单独的线程中将项目添加到列表框,这样它就不会冻结用户界面? 每次向列表框添加大约 5-15k 项,每次都会冻结 ui 5-12 秒。
表单有 4 个列表框,首先创建这些列表框的信息,然后将其添加到二维数组中(这样做可以更轻松地跟踪属于 1 行的所有信息)。之后我遍历该二维数组,将 1 行中的 4 列添加到其各自的列表框中。
例如。
for (int n = 0; n < 7500; n++)
{
listBox1.Items.Add(itemList[n, 0].ToString());
listBox2.Items.Add(itemList[n, 1].ToString());
listBox3.Items.Add(itemList[n, 2].ToString());
listBox4.Items.Add(itemList[n, 3].ToString());
}
如前所述,如何使用 UI 以外的线程来更新这些列表框,以防止不必要的 ui 冻结
【问题讨论】:
-
您确定普通列表框是向用户显示 1500 个项目的最佳 UI 吗?他们没有办法一次看到所有这些人的列表。
-
我想显示这么多项目的原因是出于调试目的,以检查信息是否真的全部正确以及我所期望的。这个程序稍后将被集成到另一个根本不显示项目的程序中。我只是好奇如何做到这一点,如果可能的话(事实证明是这样的)。不过我会看看 Listviews
标签: c# multithreading listbox