C# 更新饼图控件时用户界面冻结
我正在使用C# 更新饼图控件时用户界面冻结,c#,charts,windows-runtime,windows-store-apps,winrt-xaml-toolkit,C#,Charts,Windows Runtime,Windows Store Apps,Winrt Xaml Toolkit,我正在使用WinRTXAMLToolkit中的图表控件绘制饼图。使用几个滑块控件的值在屏幕上更新图表 当滑块值改变时,我调用一个函数来根据滑块值计算公式(比如复利) 然后我更改图表的系列定义的项源,以指向新的数据集合 我正在尝试一个即时更新的“实时”图表。问题是,当我不断更改滑块的值时,图表再次绘制自身会有1-2秒的延迟,这会使滑块运动在两者之间“冻结”一秒钟 有办法解决这个问题吗?我是否可以将图表更新移动到其他线程,以便UI线程保持空闲且不会冻结?尝试使用其他线程更新它并异步运行它 一种方法是
WinRTXAMLToolkit
中的图表控件绘制饼图。使用几个滑块
控件的值在屏幕上更新图表
当滑块值改变时,我调用一个函数来根据滑块值计算公式(比如复利)
然后我更改图表的系列定义的项源
,以指向新的数据集合
我正在尝试一个即时更新的“实时”图表。问题是,当我不断更改滑块的值时,图表再次绘制自身会有1-2秒的延迟,这会使滑块运动在两者之间“冻结”一秒钟
有办法解决这个问题吗?我是否可以将图表更新移动到其他线程,以便UI线程保持空闲且不会冻结?尝试使用其他线程更新它并异步运行它
一种方法是将其插入更新功能,然后执行以下操作:
await Update()
而Update及其调用的方法是异步的。我认为问题可能是您正在更改ItemsSource。这是一个更密集的操作,因为很多事情都是在后台发生的。您是否可以使用ObservableCollection并更新它,而不是替换它?有多少数据点?PieChart有两个部分。在同一UserControl
中还有一个单独的StackedColumnSeries
图表,根据用户输入,该图表可以有5-10个数据点。这两个图表都是从滑块
的值更改
事件更新的。您是否尝试过使用探查器运行?考虑到您提到的几点,您所描述的延迟是没有意义的。@我搜索了WiredPairie,但似乎Visual Studio profiler不适用于WinRT应用程序。以下是分析选项的说明:这是更新饼图的行:((PieSeries)This.MyChart.Series[0]).ItemsSource=PieList
并从任务
或其他线程调用它会引发异常。您无法在后台任务
上更新UI控件,因此我不清楚您的建议@AniruddhaVarma。我这样做了,但遇到了如下所述的COMException: