有人知道这样做的目的是什么?
private async Task<bool> StoreAsync(TriviaAnswer answer) { ... } [ResponseType(typeof(TriviaAnswer))] public async Task<IHttpActionResult> Post(TriviaAnswer answer) { var isCorrect = await StoreAsync(answer); return Ok<bool>(isCorrect); }
通过检查,它告诉它异步运行私有方法,但同步等待它结束.我的问题是,这有什么意义吗?或者这只是一种奇特而无用的技巧?我在研究Web API / MVC / SPA的一些代码时遇到了这个问题.
无论如何,任何见解都会有用.
解决方法
尽管它的名字,await实际上并没有像Thread.Join那样工作. async和await是Microsoft的
coroutines实现,使用Continuation Passing Style实现.对工作进行重新排序,以便在任务< T>时可以继续处理.正在完成.编译器重新安排指令以最大限度地利用异步操作.
This article因此解释:
await表达式不会阻止它正在执行的线程.相反,它会导致编译器将其余的异步方法注册为等待任务的延续.然后,Control返回到异步方法的调用者.当任务完成时,它会调用它的继续,异步方法的执行从它停止的地方恢复.
对于一些简单的代码示例,await并没有多大意义,因为在您等待的同时,您无法做其他工作.
原文地址:https://www.jb51.cc/c/110836.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。