C#中await和GetAwaiter()之间的区别

时间:2017-09-25 14:07:27

标签: c# asynchronous async-await

我有以下方法可以正常使用:

1.这是使用"异步等待"的方法:

public async Task AddClients(string clientId)
{
   bool isAlreadyAdded = await CheckIsClientExists(clientId);
   if(isAlreadyAdded)
   {
     await AddNewClientToGroup(clientId);
   }
}

2.这是方法正在使用GetAwaiter()方法:

public async Task AddClients(string clientId)
{
   bool isAlreadyAdded = await CheckIsClientExists(clientId);
   if(isAlreadyAdded)
   {
      AddNewClientToGroup(clientId).GetAwaiter().GetResult();
   }
}

我见过linkAsync await vs GetAwaiter().GetResult() and callback。 而这还没有解释为什么以及GetAwaiter()如何导致死锁情况。

有人可以解释两种方法之间的区别,即await和GetAwaiter()?

0 个答案:

没有答案