10

タイトルは私の質問をほぼ捉えていると思いますが、少し背景が続きます。

フォームをロードすると、バインディングリストに数千(30k奇数)のオブジェクトが追加されます。アプリケーションが最初にロードされるとき、オブジェクトのリストをループし、add関数を使用してBindingSourceに追加するのに数秒(メモリから約10秒)かかります。ただし、同じコードをロードする後続のフォームでこれが発生した場合、1〜2秒しかかかりません。

したがって、私のクエリは次のようになります
。1. BindingList(Of T)にAddRangeメンバーがないのはなぜですか?
2. AddRange関数を使用すると、最初と後続の追加が速くなりますか?
3.コードの1つのバージョンが同じバージョンよりも実行が遅い理由について何か考えはありますか?

あなたが提供できるかもしれないどんな助けにも感謝します。

4

2 に答える 2

3

AddRange メソッドが利用できない理由がわかりません。独自の拡張メソッドを簡単に作成できます。

    /// <summary>
    /// Adds all the data to a binding list
    /// </summary>
    public static void AddRange<T>(this BindingList<T> list, IEnumerable<T> data)
    {
        if (list == null || data == null)
        {
            return;
        }

        foreach (T t in data)
        {
            list.Add(t);
        }
    }
于 2015-11-10T15:18:50.557 に答える