我正在尝试理解在调用更新ViewModel的异步方法时,最好的方法是什么。 现在,假设我有像这样的东西:
视图:
private async void NavigationHelper_LoadState(object sender, LoadStateEventArgs e)
{
//Call my ViewModel method to update the data the UI is bound to
}
视图模型:
public async Task loadData()
{
this.Source = await loadStuffFromDatabaseAsync();
}
现在,我不确定应该使用以下哪种方法:
1) 在我的LoadState方法中使用:
await Task.Run(async () => { await ViewMode.loadData(); });
2) 使用 Task.Run
调用 loadData
方法,不需要在 Action
中等待:
await Task.Run(() => { ViewModel.loadData(); });
3) 使用以下内容调用我的loadData方法:
await ViewModel.loadData().ConfigureAwait(false);
4) 在我的 View 类中,不等待调用 loadData 方法,并在 loadData 方法内部使用 Task.Run:
View:
private void NavigationHelper_LoadState(object sender, LoadStateEventArgs e)
{
ViewModel.loadData();
}
ViewModel:
public async void loadData()
{
await Task.Run(async () =>
{
this.Source = await loadStuffFromDatabaseAsync();
});
}
这些方法之间的主要区别是什么?
其中一个比另一个更有效,我应该选择其中一个吗?
感谢您的帮助!:)
Sergio