等待的异步调用

时间:2016-02-09 15:44:38

标签: c# .net asynchronous

我有一个关于await关键字的问题。这是一些测试代码:

string username = await GetUsernameAsync();
// Some other code
var some_variable = username;

我的问题是:等待从我们调用异步方法的第一行开始,还是在需要异步方法结果的第三行开始?其他代码是在GetUsernameAsync完成执行后执行还是并行执行的?

2 个答案:

答案 0 :(得分:3)

它发生在await所在的行。

如果您想延迟等待,请将await移动到您需要结果的那一刻。记住任务,继续前进。然后,如果您需要结果,请等待任务:

Task<string> usernameTask = GetUsernameAsync();
// Some other code
var some_variable = await usernameTask;

答案 1 :(得分:1)

第一个。考虑到await只是糖的语法。它或多或少会被Task.Wait()取代以获得结果。实际上,GetUsernameAsync()将返回一个Task,而不是一个字符串。

看一下这个link,深入了解线程如何与asyn / await模式一起工作