1

我有一个ObservableCollection与Listbox绑定。我不想使用CollectionView排序。我想使用TPL使用合并排序算法。我知道我可以使用ListCollectionView,我有一个CustomSort的选项,并把那里新的Sort()。我有一个问题,如何正确使用任务并行库来实现它?使用任务并行库对您的排序算法排序ObservableCollection

+0

我已经实现了合并排序 - 我有一个类模型,它支持IComparable并实现了CompareTo方法。我对使用自定义LINQ扩展的ObservableCollection进行排序。这是我的新类使用方法MergeSort(this Ilist obj)作为参数排序。该表达式执行合并排序,假定泛型集合中的项目支持IComparable。例如,我有ObservableCollection _person,我只是打电话给_person.MergeSort()。我不知道如何在任务中使用它。 @svick – Flipper

+0

我认为问题是CollectionView不支持。也许使用Dispatcher.Invoke? – Flipper

回答

0

如果您需要更好的性能来对列表进行排序,我建议您在将其作为可观察集合之前对其进行排序。

ObservableCollection会在您更改它时引发事件,并且会严重影响性能。它还会在您排序的每个步骤更新您的UI,并且您不希望这样做。

我认为你最好将它排序为一个列表,并在之后重新绑定任何UI元素。 这可能取决于列表的大小以及您正在查找的性能。