我的视图模型中有一个方法
private async void SyncData(SyncMessage syncMessage)
{
if (syncMessage.State == SyncState.SyncContacts)
{
this.SyncContacts();
}
}
private async Task SyncContacts()
{
foreach(var contact in this.AllContacts)
{
// do synchronous data analysis
}
// ...
// AddContacts is an async method
CloudInstance.AddContacts(contactsToUpload);
}
Run Code Online (Sandbox Code Playgroud)
当我SyncData从UI命令调用时,我正在同步大量数据UI冻结.但是当我SyncContacts用这种方法打电话时
private void SyncData(SyncMessage syncMessage)
{
if (syncMessage.State == SyncState.SyncContacts)
{
Task.Run(() => this.SyncContacts());
}
}
Run Code Online (Sandbox Code Playgroud)
一切都好.它们不应该是一样的吗?我当时认为不使用await来调用异步方法会创建一个新线程.