Предполагая, что ChartViewModels
является ObservableCollection<T>
, следующий код работает должным образом:
await Dispatcher.InvokeAsync(() =>
{
ChartViewModels.Clear();
ChartViewModels.AddRange(initializedCharts);
}, DispatcherPriority.DataBind, mCancellationToken.Token);
await UpdateChartsWithValuesAsync(chartsToInitialize, ChartViewModels).ConfigureAwait(false);
Вместо этого, если я заверну вызов метода UpdateChartsWithValuesAsync
в делегате ContinueWith
, метод больше не ожидается. Я уже пытался изменить ConfigureAwait(false)
на true
, но ничего не изменилось. Ниже отредактированного кода:
await Dispatcher.InvokeAsync(() =>
{
ChartViewModels.Clear();
ChartViewModels.AddRange(initializedCharts);
}, DispatcherPriority.DataBind, mCancellationToken.Token).Task
.ContinueWith(async t => await UpdateChartsWithValuesAsync(chartsToInitialize, ChartViewModels).ConfigureAwait(false), mCancellationToken.Token, TaskContinuationOptions.OnlyOnRanToCompletion, TaskScheduler.Current).ConfigureAwait(false);
Код в Dispatcher
всегда выполняется перед делегатом ContinueWith
, но он не ожидает завершения UpdateChartsWithValuesAsync
, вызывая неприятные ошибки.
Кто-нибудь может объяснить это поведение? Спасибо
WPF, NET Framework 4.7 проекта