我一直在阅读关于新的异步await关键字,它听起来很棒,但有一个关键问题我到目前为止看过的任何一个介绍视频都找不到答案(我也读过白皮书)一会儿回来).
假设我await在主UI线程上的嵌套函数中有一个调用.此时线程会发生什么?控件是否返回消息循环,UI线程可以自由处理其他输入?
当等待的任务完成时,整个堆栈是否被推送到消息队列,这样控制将通过每个嵌套函数返回,或者其他完全发生在这里?
其次(虽然我引起了你的注意),我真的不明白为什么需要标记异步方法async.不能异步执行任何方法吗?如果我想异步执行一个方法但它没有async关键字怎么办?有没有办法简单地做到这一点?
干杯.:)
编辑: 不可否认,如果我能得到示例代码编译,我可能只是想出自己,但由于某种原因,我遇到了一个块.我真正想知道的是,延续的持续程度是多久...是否会冻结整个调用堆栈,在任务完成时恢复它,还是只返回到目前为止?是否需要将函数本身标记为异步以支持延续,或者(正如我最初所说)它是否继续整个调用堆栈?
如果它没有冻结整个调用堆栈,那么当异步等待命中非异步调用函数时会发生什么?它阻止了吗?这不会打败等待点吗?我希望你能看到我在这里缺少一些理解我希望有人可以填写,所以我可以继续学习这个.