WebApi中的C#await / async,重点是什么?

有人知道这样做的目的是什么?
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并没有多大意义,因为在您等待的同时,您无法做其他工作.

相关文章

/** C+⬑ * 默认成员函数 原来C++类中,有6个默认成员函数: 构造函数 析构函数 拷贝...
#pragma once // 1. 设计一个不能被拷贝的类/* 解析:拷贝只会放生在两个场景中:拷贝构造函数以及赋值运...
C类型转换 C语言:显式和隐式类型转换 隐式类型转化:编译器在编译阶段自动进行,能转就转,不能转就编译...
//异常的概念/*抛出异常后必须要捕获,否则终止程序(到最外层后会交给main管理,main的行为就是终止) try...
#pragma once /*Smart pointer 智能指针;灵巧指针 智能指针三大件//1.RAII//2.像指针一样使用//3.拷贝问...
目录&lt;future&gt;future模板类成员函数:promise类promise的使用例程:packaged_task模板类例程...