WPF处理耗时的UI线程更新

问题描述

| 我有一个WPF应用程序,其中花费了很多时间来更新UI上的控件(数据可视化控件,当为可视化添加的数据相当大时,该控件会导致应用程序冻结)。我无法使用后台线程并调用调度程序,因为要添加到可视化工具的数据必须归UI线程所有(即可视化工具中的数据点)。而且我不喜欢UI冻结这么长时间。我在这里有什么选择?     

解决方法

我建议先对应用程序进行性能分析,以找到瓶颈。我敢打赌,这将缩小您的问题范围。     ,如果正确设置(以WPF方式),则它可能接受某些ViewModel类作为数据源。如果您逐个更改该值,则每次可能会更新GUI,这非常昂贵。检查是否有SuspendLayout / ResumeLayout方法或其他方法。或者看看如果创建一个新的Viewmodel(或深度克隆现有的Viewmodel),将所有内容写入其中,然后将DataSource设置为它,会发生什么。 我不知道您使用的是什么控件,不过是Winforms DataGridView中的一个示例。有两种手动添加行的方法:调用AddRow一次添加一行,而AddRows一次添加一堆行,然后写入。 AddRows比AddRow快几个数量级。阅读您的控件上的手册。 GJ