我對並行編程和線程相當陌生。我想計算一系列圖表並將其添加到圖表中,這不幸是一項相當耗時的任務。所以我想在此期間展示一個加載屏幕:如何從另一個線程同步UI和訪問對象?
(.NET 4.0, WPF for UI)
ShowLoadingScreen(true);
CalculateAndUpdateChart(chartControl, settings);
ShowLoadingScreen(false);
...
private void ShowLoadingScreen(bool show) { loadingScreen.IsBusy = show; }
private void CalculateAndUpdateChart(ChartControl chart, ProductSettings settings)
{
chart.SomeSettings = ...
foreach(var item in settings.Items)
{
chart.Series.Points.Add(CalculateItem(item));
...
}
}
但是當然這是行不通的。所以我想我需要更新另一個線程中的圖表控件。
ShowLoadingScreen(true);
Tash.Factory.StartNew(()=>{CalculateAndUpdateChart(chartControl, settings)});
ShowLoadingScreen(false);
不過,現在我得到不同的錯誤,大多數的我怎麼不能從另一個線程訪問chartControl和設置。
如何訪問和更改另一個線程的UI形式以及如何將在一個線程中創建的對象傳遞給另一個線程?你能給我一個類似的例子,我想要做什麼?
如果你想顯示在圖表上「建立」的時候,那麼內'CalculateAndUpdateChart調用(原樣);否則,如果你想全部一次,我建議運行一個任務到'CalculateItem'所有項目_then_一旦你有所有項目計算,調用更新圖表。 –
你見過我的回答嗎? – punker76