我有一个WPF应用程序,其中花费了大量时间来更新UI上的控件(数据可视化控件导致应用程序在为可视化添加的数据相当大时冻结)。我无法使用后台线程并调用调度程序,因为添加到可视化工具的数据必须由UI线程(即可视化工具中的数据点)拥有。我不喜欢UI冻结这么久。我有什么选择?
答案 0 :(得分:1)
我建议首先分析应用程序以找到瓶颈。我打赌这会缩小你的问题。
答案 1 :(得分:1)
如果设置正确(以WPF方式),它可能会接受一些ViewModel类作为数据源。如果逐个更改值,则可能每次更新GUI,这非常昂贵。检查是否有SuspendLayout / ResumeLayout方法或其他东西。或者看看如果您创建一个新的Viewmodel(或深度克隆现有的Viewmodel)会发生什么,将所有内容写入该内容然后将DataSource设置为它。
我不知道你正在使用什么控件,而是来自Winforms DataGridView的一个例子。有两种方法可以手动添加行:调用AddRow一次添加一行,AddRows一次添加一行,然后写入它们。 AddRows比AddRow快几个数量级。阅读您掌控的手册。
GJ