1

ObservableCollection을 Listbox로 바인드했습니다. 나는 CollectionView 정렬을 사용하고 싶지 않다. TPL을 사용하여 병합 정렬 알고리즘을 사용하고 싶습니다. ListCollectionView를 사용할 수 있고 CustomSort에 대한 옵션이 있고 새로운 Sort()를 넣을 수 있다는 것을 알고 있습니다. 작업 병렬 라이브러리를 올바르게 구현하는 방법에 문제가 있습니까?작업 병렬 라이브러리를 사용하여 ObservableCollection을 사용자 고유의 정렬 알고리즘으로 정렬

+0

병합 정렬을 구현했습니다. IComparable을 지원하고 CompareTo 메서드를 구현하는 클래스 모델이 있습니다. 사용자 지정 LINQ 확장을 사용하는 ObservableCollection을 정렬합니다. 그건 내 새로운 클래스 MergeSort 메서드 (이 Ilist obj)를 매개 변수로 사용하여 Sort입니다. 식은 일반 컬렉션의 항목이 IComparable을 지원한다는 가정하에 병합 정렬을 수행합니다. 예를 들어 ObservableCollection _person이 있고 _person.MergeSort()를 호출하면됩니다. 작업과 함께 사용하는 방법을 모르겠습니다. @svick – Flipper

+0

문제는 CollectionView가 지원하지 않는다고 생각합니다. Dispatcher.Invoke를 사용했을 수도 있습니다. – Flipper

답변

0

목록을 정렬하는 데 더 나은 성능이 필요한 경우 관찰 가능한 컬렉션으로 만들기 전에 정렬하는 것이 좋습니다.

ObservableCollection은 이벤트를 변경하면 성능에 악영향을 미칩니다. 또한 정렬의 각 단계에서 UI를 업데이트하므로 사용자가이를 원하지 않습니다.

목록으로 정렬하고 나중에 UI 요소를 리 바인딩하는 것이 더 좋습니다. 이것은 아마도 목록의 크기와 찾고자하는 성능에 달려 있습니다.

관련 문제