使用线程来填充对象列表

时间:2014-01-29 21:54:00

标签: c# multithreading performance list

我正在使用一个列表来填充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();

这是我的2方法

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:是

形式的公共列表

1 个答案:

答案 0 :(得分:0)

我有3,000条记录存在同样的问题。我发现在循环期间将组合框中的自动完成模式转为无,然后在循环结束后将其重新打开,使其与直接查询到sql数据库一样快。希望这会有所帮助。