在异步等待中处理错误

时间:2018-06-11 13:07:34

标签: c# async-await

我尝试使用Stephen Cleary libray Nito.Mvvm.Async来处理我的视图模型中的异步初始化,但我对SyncronisationContext有一些问题:

示例1:我不确定如何以与单元测试兼容的方式处理错误 我想异步填写一个程序列表,但如果出现问题我必须显示一个弹出窗口(在主线程中),所以我尝试了这个:

ProgramsAsync = NotifyTask.Create(this.FillPrograms());
ProgramsAsync.Task.ContinueWith(previous =>
        {
             messageBoxService.ShowError(ProgramsAsync.ErrorMessage);
        },
CancellationToken.None,
TaskContinuationOptions.OnlyOnFaulted,
TaskScheduler.FromCurrentSynchronizationContext());

但是,在mstest的上下文中,TaskScheduler.FromCurrentSynchronizationContext无效。 如何确保在正确的上下文中处理错误?

示例2:有时,异步方法的结果用于填充CollectionView。这需要在主线程中更新值,但这次不是在发生错误时。

感谢您的帮助。 分钟

0 个答案:

没有答案