簡體   English   中英

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

[英]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那樣工作。 asyncawait是Microsoft使用Continuation Passing Style實現的協同程序 重新排序工作,以便在Task<T>完成時繼續處理。 編譯器重新安排指令以最大限度地利用異步操作。

本文解釋如下:

await表達式不會阻止它正在執行的線程。 相反,它會導致編譯器將其余的異步方法注冊為等待任務的延續。 然后,Control返回到異步方法的調用者。 當任務完成時,它會調用它的繼續,異步方法的執行從它停止的地方恢復。

對於一些簡單的代碼示例, await並沒有多大意義,因為在您等待的同時,您無法做其他工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM