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: