.net 需要构建快速排序datagrid应用程序(桌面客户端)

.net 需要构建快速排序datagrid应用程序(桌面客户端),.net,.net,我在创建一个处理中等数量的快速刷新数据并将其显示在datagrid中的应用程序时遇到问题。目前,我们使用的是Telerik radgridview winforms控件,刷新性能相当不错——直到其中一列被排序,这使得事情变得非常糟糕,应用程序几乎无法使用。我不需要显示很多数据,比如200项以下的数据,但它们确实会非常频繁地更新,每半秒左右更新一次。数据是只读的,但我们更喜欢使用datagrid,因为它可以让用户轻松地选择显示哪些列以及用于排序的列 分析表明,打开排序会产生大量的单元格重画,数百次

我在创建一个处理中等数量的快速刷新数据并将其显示在datagrid中的应用程序时遇到问题。目前,我们使用的是Telerik radgridview winforms控件,刷新性能相当不错——直到其中一列被排序,这使得事情变得非常糟糕,应用程序几乎无法使用。我不需要显示很多数据,比如200项以下的数据,但它们确实会非常频繁地更新,每半秒左右更新一次。数据是只读的,但我们更喜欢使用datagrid,因为它可以让用户轻松地选择显示哪些列以及用于排序的列

分析表明,打开排序会产生大量的单元格重画,数百次属性更改的重画数量高达数百万。大部分CPU似乎都被各种GDI绘图方法所占用,我假设这些方法处理绘制单元


从托管一个WPF网格到利用硬件加速,再到购买另一个网格,在这一点上,几乎任何事情都在讨论中。如果有人在创建这样的应用程序方面有经验或建议,那就太棒了

没有具体的经验,但一般性的问题是:你能限制屏幕重画的频率吗?这听起来像是每次房地产发生变化时都会重新绘制和重新绘制所有内容


如果您无法控制排序和重画的频率,另一个编码更改可能是保持数据的一个副本为最新,然后分别拥有Telerik程序看到的副本。然后以固定的时间间隔像每秒一样更新Telerik副本。这一切都不知道这个程序是如何工作的,但这一切可行吗?

是的,我们可以控制这种事情发生的频率-现在它被设置为每秒两次左右。但不幸的是,重绘通常会导致在行改变位置时进行绘制。将您的数据与程序看到的数据分开维护,并在重绘之间进行复制,这是否有帮助?或者这是不可能的/有用的?这就是我最终处理它的方式——使用Telerik的虚拟模式。