ser*_*gpa 2 c# asynchronous async-await
我很难理解如何使用异步并等待工作.
我理解当异步方法遇到await表达式时,该方法立即返回,并且在将来的某个时刻await表达式返回并且该方法继续执行.
那么,我不明白,当async方法包含多个await表达式时会发生什么?当执行命中第二个await表达式时,由于该方法在第一个await表达式被命中后已经返回,所以围绕第二个await表达式执行会发生什么?
我目前正在阅读两本关于异步和等待的书,但我的黑暗思想都没有被照亮!
我理解当异步方法遇到await表达式时,该方法立即返回,并且在将来的某个时刻await表达式返回并且该方法继续执行.
是的,如果等待还没有完成.
当执行命中第二个await表达式时,由于该方法在第一个await表达式被命中后已经返回,所以围绕第二个await表达式执行会发生什么?
它将控制返回到执行延续的任何内容,这将取决于上下文.在UI线程的WinForms应用程序中,它只是事件循环.在线程池线程中,它只是线程池调度程序.
机会就是延续根本不关心它的任何调用 - 它只是"在上下文中执行的东西".它可能会继续执行下一步需要做的任何事情(或者等待更多工作).
最重要的一点是,现在的第一个调用者有适当的Task或者Task<T>所以当整个异步方法已经完成,他们可以告诉.
| 归档时间: |
|
| 查看次数: |
387 次 |
| 最近记录: |