0

ListBoxここに、10,000 を超えるレコード (ディレクトリとそのサブディレクトリ内のファイル) を受け入れるデスクトップ アプリケーションがあります。おそらく 50,000 を超えるものを割り当てるDataSourceと、の中にあるにもかかわらず UI がハングするため、のデータの割り当ての進行状況を示すmy もハングします。DataTableDoWorkBackgroundWorkerProgressBarListBox

ここでもメソッドを使用して、割り当て中にクロススレッドを回避しましたがDisplayMemberValueMemberそれでもハングします。

コードは次のとおりです。

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;
    }
}
4

1 に答える 1