我有一個大的數據庫(超過10萬),我需要從列防止調用凍結形式的AddRange
這之一的數據填充的組合框的代碼是我現在有
FastecData db = ConnectionHelper.CreateConnection(CurrentLocation);
List<Fakturor> t = db.Fakturor.OrderBy(z => z.FaktNr).ToList();
List<string> st = new List<string>();
foreach (var item in t)
{
_busy.WaitOne();
st.Add(item.FaktNr);
}
st.OrderBy(x => x.Length);
comboBoxFaktNr1.Invoke((Action)(() =>
{
comboBoxFaktNr1.Items.AddRange(st.ToArray());
}));
comboBoxFaktNr2.Invoke((Action)(() =>
{
comboBoxFaktNr2.Items.AddRange(st.ToArray());
}));
這是作爲後臺工作人員運行的。 我使用此代碼的問題是,它運行時.Items.AddRange(st.ToArray());
表單停止響應約10秒。有沒有辦法阻止表單凍結?
如果你只需要'FaktNr'在組合框中,爲什麼你從數據庫中讀取整個記錄? – dotNET
你真的將100k項目添加到組合框?爲什麼??用戶將無法使用它!更好地存儲它,然後添加用戶請求/過濾出的一些值。 – TaW
另外,如果你使用'BackgroundWorker','_busy'的目的是什麼? – dotNET