gpt4 book ai didi

c# - 异步并等待 : multiple await expressions

转载 作者:行者123 更新时间:2023-11-30 20:23:20 25 4
gpt4 key购买 nike

我在理解如何使用 async 和 await 时遇到一些困难。

我了解当异步方法遇到 await 表达式时,该方法会立即返回,并在未来的某个时刻返回 await 表达式并且该方法会继续执行。

那么我不明白的是,当异步方法包含多个 await 表达式时会发生什么?当执行命中第二个 await 表达式时,由于方法已经在命中第一个 await 表达式后返回,那么围绕第二个 await 表达式执行会发生什么情况?

我目前正在阅读两本关于 async 和 await 的书,但这两本书都没有照亮我黑暗的心灵!

最佳答案

I understand that when an async method hits an await expression, the method returns immediately and at some point in the future the await expression returns and the method continues to execute.

是的,如果可等待对象尚未完成。

When execution hits the second await expression, since the method has already returned after the first await expression was hit, what happens to execution around the second await expression?

它将控制返回给执行延续的任何内容,这将取决于上下文。在 UI 线程中的 WinForms 应用程序中,它只是事件循环。在线程池线程中,它只是线程池调度程序。

有可能调用延续根本不关心它 - 它只是“在上下文中执行的东西”。它可能会继续执行下一步需要做的任何事情(或者等到有更多工作)。

重要的一点是现在第一个调用者有合适的TaskTask<T>这样他们就可以知道整个异步方法何时完成。

关于c# - 异步并等待 : multiple await expressions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29143573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com