我將試圖對async
- await
進行一次演講,並且我正在創建一個流程圖,試圖顯示可能的執行順序。這是異步等待如何工作的正確圖表?
我試圖基礎,從上述段落
異步方法的開始是,就像任何其他 方法執行。也就是說,它會同步運行,直到遇到「等待」(或 引發異常)。
「await」關鍵字是事物可以異步的地方。等待是 像一個一元運算符:它需要一個參數,一個等待(一個 「awaitable」是一個異步操作)。等待檢查 等待看它是否已經完成;如果已經等待 已經完成,那麼該方法只是繼續運行 (同步,就像常規方法一樣)。
如果「等待」看到等待沒有完成,那麼它異步執行 。它告訴等待完成時運行 方法的其餘部分,然後從異步方法返回。
稍後,當等待完成時,它將執行異步方法的其餘部分 。如果您正在等待內置的等待時間(例如 任務),則異步方法的其餘部分將在返回「await」之前捕獲的 「上下文」上執行。
從http://blog.stephencleary.com/2012/02/async-and-await.html
BTW的方法可以是同步或異步的,並且它可以仍然awaitable。 –
你認爲談談你不明白的事情是明智的嗎?關於這個功能,有大量的錯誤信息和模糊的思考;我不確定你想創造更多。 –
參見[該圖(https://i-msdn.sec.s-msft.com/dynimg/IC612215.jpeg),從[這裏](https://msdn.microsoft.com/en-us/library /mt674882.aspx)。 –