Я довольно новичок в параллельном программировании и потоках.Я хочу рассчитать и добавить ряды к диаграмме, что, к сожалению, довольно трудоемкая задача.Поэтому я хотел бы показать экран загрузки между тем:
(.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));
...
}
}
Но, конечно, это не работает.Поэтому я думаю, что мне нужно обновить элемент управления Chart в другом потоке.
ShowLoadingScreen(true);
Tash.Factory.StartNew(()=>{CalculateAndUpdateChart(chartControl, settings)});
ShowLoadingScreen(false);
Однако теперь я получаю другие ошибки, большинство из которых не позволяет получить доступ к chartControl и настройкам из другого потока.
Как получить доступ и изменить пользовательский интерфейс в другом потоке и как передавать объекты, созданные в одном потоке, в другой?Можете ли вы привести аналогичный пример того, что я пытаюсь сделать?