gpt4 book ai didi

c# - .NET 中的可取消排序?

转载 作者:行者123 更新时间:2023-11-30 13:34:53 25 4
gpt4 key购买 nike

我在 VirtualMode 中使用 ListView 来显示非常多的行,数百万行。存储在通用列表中的行的数据。

现在我想实现一个排序功能,它将通过一些比较器对列表进行排序。

问题是,目前平均单次排序大约需要 30 秒,在此期间用户无法对 ListView 做任何事情,必须等到它结束。

不是每个用户都会接受等待那么长时间,大多数用户会取消排序,如果可以的话,我想允许该取消功能。不幸的是,内置的 List.Sort 和 Array.Sort 不能被取消。

现在排序发生在单独的线程上,所以我可以使用 Thread.Abort,但它可能会导致列表损坏,这对我来说是 Not Acceptable 。

除了自己重新实现整个排序算法之外,我还能做些什么吗?

谢谢。

最佳答案

复制列表,在线程中对副本进行排序,然后替换原始列表(如果排序完成且未被中断)。

但如果可能的话,我会采纳 Martinho 的建议——在应用程序中开始有数百万行对我来说感觉不对。在数据到达您之前,数据库可以更好地过滤和排序数据。

关于c# - .NET 中的可取消排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1776654/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com