[英]C# await / async in WebApi, what's the point?
有人知道這樣做的目的是什么?
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使用Continuation Passing Style實現的協同程序 。 重新排序工作,以便在Task<T>
完成時繼續處理。 編譯器重新安排指令以最大限度地利用異步操作。
本文解釋如下:
await表達式不會阻止它正在執行的線程。 相反,它會導致編譯器將其余的異步方法注冊為等待任務的延續。 然后,Control返回到異步方法的調用者。 當任務完成時,它會調用它的繼續,異步方法的執行從它停止的地方恢復。
對於一些簡單的代碼示例, await
並沒有多大意義,因為在您等待的同時,您無法做其他工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.