小编nim*_*tra的帖子

调用异步方法和Task.Run异步方法之间的区别

我的视图模型中有一个方法

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来调用异步方法会创建一个新线程.

c# xaml asynchronous task-parallel-library async-await

6
推荐指数
1
解决办法
4857
查看次数