异步调用与等待
本文关键字:等待 调用 异步 | 更新日期: 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 模式