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元素。 這可能取決於列表的大小以及您正在查找的性能。