1

我使用WinRTXAMLToolkit的圖表控件繪製餅圖。該圖表使用幾個slider控件的值在屏幕上更新。更新餅圖控件時UI凍結

當滑塊值發生變化時,我調用函數根據滑塊的值計算公式(比如說複合關係)。

然後我更改圖表的SeriesDefinitionsItemsSource指向新的數據集合。

我想要一個'活'PieChart即時更新。問題是,當我不斷更改滑動條的值時,圖表會自動重新繪製1-2秒的延遲時間 - 這會使滑塊移動「凍結」一秒鐘。

有沒有辦法解決這個問題?我可以將圖表更新移動到不同的線程,以便UI線程保持空閒狀態並且不會凍結?

+0

有多少個數據點? – TaW

+0

PieChart有兩個部分。在同一UserControl中還有一個StackedColumnSeries的獨立圖表,根據用戶輸入可以有5-10個數據點。兩個圖表都是從'Slider'的'ValueChanged'事件更新的。 –

+0

您是否嘗試過使用探查器運行?沒有任何意義,因爲你提到的只有少數幾點,所以會引起延遲。 – WiredPrairie

回答

1

嘗試使用另一個線程更新它並運行它的異步。

的一種方法是將其插入到更新機能的研究,並做:

await Update() 

雖然更新和它在調用的方法是異步。

+0

這是更新餅圖的行:'((PieSeries)this.MyChart.Series [0])。ItemsSource = PieList;'從'Task'或其他線程調用它會引發異常。 –

+0

您無法更新背景「任務」上的UI控件,因此我不清楚您建議的@AniruddhaVarma。 – WiredPrairie

1

我認爲這個問題可能是你改變了ItemsSource。這是一個更密集的操作,因爲很多事情發生在後臺。你可以使用ObservableCollection並更新它而不是替換它嗎?

+0

我這樣做了,但遇到了COMException,如下所述:[SO鏈接](http://stackoverflow.com/questions/16730124/winrtxamltoolkit-charting-comexception-when-use-of-inotifypropertychanged) –