我想了解什麼是調用異步方法更新我的ViewModel時使用的最佳方法。 現在,讓我們說我有這樣的事情:使用MVVM模式實現異步「loadData」方法的最佳方法
查看:
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 方法:
await Task.Run(() => { ViewModel.loadData(); });
3)呼叫我的 loadData 方法:
await ViewModel.loadData().ConfigureAwait(false);
4)調用 loadData 方法,無需等待它在我的 View類 和使用 Task.Run 我loadData方法中:
查看:
private void NavigationHelper_LoadState(object sender, LoadStateEventArgs e)
{
ViewModel.loadData();
}
查看型號:
public async void loadData()
{
await Task.Run(async() =>
{
this.Source = await loadStuffFromDatabaseAsync();
});
}
這些認可的主要區別是什麼?
另一個更有效率,我應該特別選擇一個嗎?
感謝您的幫助! :)
塞爾吉奧
異步void的方法,你應該遵循附加異步所有異步方法的命名約定。 – 2015-02-23 20:35:01
我認爲,由於Asynch支持集成到基本代碼中的是Async和Await兩個詞,因此我相信Reed Cosby已經告訴我們所有我們需要的東西。我們不再需要調用任務方法。 – 2015-02-23 20:51:40
@JohnPeters:事實並非如此。可能有阻塞UI線程的代碼。 – Fred 2015-02-23 21:25:18