2014-01-29 19 views
0

我正在使用列表來填充Windows窗體加載中的組合框控件。其中有大約2萬多條記錄 ,並且在這種情況下列表執行速度非常慢。使用線程來填充對象列表

我用線程,以加快執行,但它不填充列表 你能幫助我

這是線程

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中:是的形式

+0

這是哪種編程語言?您可能需要添加相應的標籤。 –

+0

C#並連接到SQL –

+1

即使您在後臺線程中執行該操作,在某些時候您仍然從數據庫返回20k條記錄。自己有多少時間? –

回答

0

我有3000個記錄有同樣的問題公示名單。我發現在循環過程中將組合框中的autocompletemode設置爲none,然後在循環完成後將它重新打開,使其與對sql數據庫的直接查詢一樣快。希望這可以幫助。