ListBox
ここに、10,000 を超えるレコード (ディレクトリとそのサブディレクトリ内のファイル) を受け入れるデスクトップ アプリケーションがあります。おそらく 50,000 を超えるものを割り当てるDataSource
と、の中にあるにもかかわらず UI がハングするため、のデータの割り当ての進行状況を示すmy もハングします。DataTable
DoWork
BackgroundWorker
ProgressBar
ListBox
ここでもメソッドを使用して、割り当て中にクロススレッドを回避しましたがDisplayMember
、ValueMember
それでもハングします。
コードは次のとおりです。
private void bgWorkerForLstBox1_DoWork(object sender, DoWorkEventArgs e)
{
string viewPath = string.Empty;
if (radFullPath.Checked)
viewPath = "fullPath";
else if (radShortPath.Checked)
viewPath = "truncatedPath";
else
viewPath = "fileName";
if (dt1 != null)
if (dt1.Rows.Count > 0)
SetListBox1Props(viewPath, "fullPath");
}
delegate void SetListBox1PropsCallback(string DisplayMember, string ValueMember);
private void SetListBox1Props(string DisplayMember, string ValueMember)
{
if (this.lstBox1.InvokeRequired)
{
SetListBox1PropsCallback d = new SetListBox1PropsCallback(SetListBox1Props);
this.Invoke(d, new object[] { DisplayMember, ValueMember });
}
else
{
this.lstBox1.DataSource = dt1;
this.lstBox1.DisplayMember = DisplayMember;
this.lstBox1.ValueMember = ValueMember;
}
}