我剛剛被介紹給這個概念,所以如果答案是微不足道的道歉。如果每個異步都有等待,並且每個等待都應用於異步,那麼在哪裏以及如何結束?
據我所知,async
只是一個標誌,說在方法內部有一個await
,控制將在異步方法正在工作時返回給調用者。我的理解是,假設調用堆棧中的某個地方沒有等待異步方法,而不是至少立即(即在異步方法執行時完成其他一些工作),這是有用的。
但是,await
似乎只適用於async
方法,其中內部必須有await
s。這創建了一個連續的呼叫鏈。它必須在某個地方結束,等待被應用到非異步方法。但是哪裏?
您無法等待非異步方法,但可以通過訪問任務的Result屬性來等待異步方法完成工作。你可以用它來「切斷」異步鏈,或者你可以讓整個鏈是異步鏈。 –
@TamásSzabó - 是的,你可以。你可以'等待'返回* awaitable *對象的任何方法。 「任務」恰好是最常見的等待。但即使在那裏,也沒有要求'Task'返回方法是'async'。儘管它看起來是方法簽名的一部分,但它實際上完全是您所調用方法的一個實現細節。 –
猜猜我錯了。謝謝你清理那個! –