异步调用与等待

本文关键字:等待 调用 异步 | 更新日期: 2023-09-27 18:33:57

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

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

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

异步调用与等待

它发生在await所在的行。

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

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

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

查看此链接,深入了解线程如何使用 asyn/await 模式