有谁知道这样做的目的是什么?
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
and await
是微软的实现协程 http://en.wikipedia.org/wiki/Coroutine,使用连续传球风格实现。工作被重新排序,以便在Task<T>
正在完成。编译器重新排列指令以最大限度地利用异步操作。
本文 http://msdn.microsoft.com/en-us/library/hh156528.aspx如此解释:
await 表达式不会阻塞正在执行它的线程。相反,它会导致编译器将异步方法的其余部分注册为等待任务的延续。然后控制权返回到异步方法的调用者。当任务完成时,它会调用其延续,并且异步方法的执行会从中断处恢复。
对于一些简单的代码示例,await
并没有多大意义,因为在等待期间您没有其他工作可以做。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)