【发布时间】:2014-01-29 21:54:00
【问题描述】:
我正在使用列表来填充 Windows 表单加载中的组合框控件。大约有 20,000 多条记录 填充它,并且在这种情况下,列表的执行速度非常慢。
我使用线程来加速执行,但它没有填满列表 你能帮帮我吗
这是线程
Thread UpdateThread;
ThreadStart UpdateThreadStart = new ThreadStart(FillCombBox);
static MethodInvoker CallDataBindToDataGrid = new MethodInvoker(FilDiagtWithdatat);
我把它放在负载中
UpdateThread = new Thread(UpdateThreadStart);
UpdateThread.Name = "Update Thread";
UpdateThread.IsBackground = true;
UpdateThread.Start();
这是我的第二个方法
static void FillCombBox()
{
CBList = Items.GeItemsAll(1);
}
static void FilItemtWithdatat()
{
if (CBList.Count!=0)
{
MyForm.CB_Item.DataSource = ItemList;
MyForm.CB_Item.ValueMember = "ItemID";
MyForm.CB_Item.DisplayMember = "ItemName";
MyForm.CB_Item.SelectedIndex = -1;
}
}
myform : 我不过这行在顶部static ItemHome MyForm;
CBList : 是公共列表,格式为
【问题讨论】:
-
这是哪种编程语言?您可能需要添加相应的标签。
-
C# 并连接到 SQL
-
即使您在后台线程中完成工作,在某些时候您仍然会从数据库中返回 20k 条记录。这需要多少时间?
-
我严重怀疑列表本身就是问题所在。一个包含 20000 个元素的列表是元素真的没什么好说的,除非记录很大。
-
懒惰评估会更好吗?只显示你真正需要的——我相信你没有组合框一次显示 20k 个对象。不确定组合框,但据我所知 - 流布局面板看起来很相似并支持它。
标签: c# multithreading performance list