背景:WPFのUIに直接リンクされているオブジェクトのリストがあります。私はそれらのオブジェクトでいくつかの作業をする必要がありますが、私はそれら(非同期)と一緒に作業している間、私はUI(パフォーマンスと審美的な理由)をリフレッシュしたくありません。参照を保持しないオブジェクトのコピー
私は、(Collection<T>.CopyTo(T[] array, int index)
を使用して)アイテムをコピーし、コピーを処理して、元のリストをコピーしたものを上書きすると考えました。問題は、それでも参照が保持され、UIが継続的にリフレッシュされるということです。私が何をしたかの コード例:
MyUIObject[] myCopiedList = new MyUIObject[MyObjectsLinkedToTheUI.Count];
MyObjectsLinkedToTheUI.CopyTo(myCopiedList);
foreach (MyUIObject myCopiedItem in myCopiedList)
{
//while I do this, the UI is still updated
PerformLongAndWearyOperationAsync(myCopiedItem);
}
MyObjectsLinkedToTheUI.Clear();
foreach (var myCopiedItem in myCopiedList)
{
MyObjectsLinkedToTheUI.Add(myCopiedItem);
}
元のオブジェクトへの参照を保持することなく、自分のアイテムをコピーする可能性がありますか? 1
UPDATEは、これまでのあなたの貢献をいただき、ありがとうございます。私が言及するのを忘れた1つの事:これはWindows Phone 8.1のため、ICloneableは利用できません。
「複製」する必要がある場合は、新しいオブジェクトを作成してプロパティをコピーし、参照型を複製する必要があります。 「クローン」「シャローコピー」と「ディープコピー」を検索すると、ニーズに合ったものを見つけることができます。 –