我在理解如何使用 async 和 wait 工作时遇到了一些困难。
据我所知,当异步方法命中等待表达式时,该方法立即返回,并且在将来的某个时刻等待表达式返回并且该方法继续执行。
那么,我不明白的是,当异步方法包含多个等待表达式时会发生什么?当执行命中第二个await表达式时,由于在命中第一个await表达式后该方法已经返回,那么第二个await表达式周围的执行会发生什么?
我目前正在阅读两本关于 async 和 wait 的书,但是这两本书都没有照亮我黑暗的心灵!
据我所知,当异步方法命中等待表达式时,该方法立即返回,并且在将来的某个时刻等待表达式返回并且该方法继续执行。
Yes, if等待的事情还没有完成。
当执行命中第二个await表达式时,由于在命中第一个await表达式后该方法已经返回,那么第二个await表达式周围的执行会发生什么?
它将控制权返回给执行延续的任何内容,这取决于上下文。在 UI 线程中的 WinForms 应用程序中,它只是事件循环。在线程池线程中,它只是线程池调度程序。
很可能所谓的延续实际上根本不关心它——它只是“在上下文中执行的东西”。它可能会继续执行下一步需要做的任何事情(或者等到有更多工作)。
重要的一点是,到目前为止first呼叫者有适当的Task
or Task<T>
这样他们就可以知道整个异步方法何时完成。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)