Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF C#ListView排序导致应用程序冻结_C#_Wpf_Sorting - Fatal编程技术网

WPF C#ListView排序导致应用程序冻结

WPF C#ListView排序导致应用程序冻结,c#,wpf,sorting,C#,Wpf,Sorting,因此,我一直在研究一个问题,即按列标题单击对网格视图进行排序。虽然收集量很小,但分拣工作良好且快速。然而,当收集量增加到100万件左右时,分拣可能需要相当长的时间。在UI线程上执行排序时,应用程序将锁定。我需要在执行排序时保持应用程序的活动状态。我曾尝试在一个单独的UI线程上运行它,但没有效果,使用异步调用运行它,应用程序调度器仍然毫无乐趣。请使用下面的代码说明排序逻辑,其中sortBy是排序依据的绑定路径 private void Sort(string sortBy, ListSortDir

因此,我一直在研究一个问题,即按列标题单击对网格视图进行排序。虽然收集量很小,但分拣工作良好且快速。然而,当收集量增加到100万件左右时,分拣可能需要相当长的时间。在UI线程上执行排序时,应用程序将锁定。我需要在执行排序时保持应用程序的活动状态。我曾尝试在一个单独的UI线程上运行它,但没有效果,使用异步调用运行它,应用程序调度器仍然毫无乐趣。请使用下面的代码说明排序逻辑,其中sortBy是排序依据的绑定路径

private void Sort(string sortBy, ListSortDirection direction, ListView myListView, CollectionView myCollectionView)
{
    using(myCollectionView.DeferRefresh())
    {
        myCollectionView.SortDescription.Clear();
        myCollectionView.SortDescription.Add(new SortDescription(sortBy, direction);
    }
    myListView.ScrollIntoView(myListView.SelectedItem);
}

在一个应用程序中显示一百万条条目是非常不规则的。1.您确定分页不适合您的场景吗?2.如果你坚持这样做,你可以使用一个线程安全的集合来支持这种类型的工作嗨,我认为这可以解决你的问题:)试试这是一个不寻常的情况,但是根据权利,这个集合不应该超过100个条目,在某些情况下,它可能会发展到难以置信的大尺寸。我将研究线程安全集合,谢谢。如果它只是在异常情况下变大,那么我只会激活一个小的警告-集合大小增长到X排序将很慢。布拉姆,我决定使用您的选项,对于理论上不应该在我的系统中发生的事情来说,这似乎是最简单的,但是对一个大数据集进行一次简短检查,提示“您确定要继续吗?”并将光标更改为“等待”似乎适合手头的任务。