我試圖理解異步的概念,並等待並不能完全理解它的概念。直到我學到的是Async-await,如果我們調用方法-A,然後使用方法-A等待來調用方法-B,那麼只有在方法B的工作完成後,方法-A的提醒纔會運行。我錯過了什麼嗎?請糾正我。AsyncAwait概念
如果是這樣,則情況每次我們甚至調用方法使用同步編程,該方法-A等待,直到我們已經完成了調用方法-B的提醒時間?
public void methodA(){
methodB();
Console.Writeline("MethodB has been called");
}
public void methodB(){//do stuff}
現在用異步等待:
public async Task methodA(){
await methodB();
Console.Writeline("MethodB has been called");
}
public async Task methodB(){//do stuff}
請介意我表示有什麼區別?我很難試圖理解這個概念。通常,我在ThreadPool和Threads上看到帖子,但沒有一個清晰的概念,我不太明白。
你做什麼樣的研究?有大量資源試圖解釋異步/等待如何工作。另外,你是否知道Task是什麼,它是如何工作和使用的? – Euphoric
首先,我建議你閱讀[有沒有線程(http://blog.stephencleary.com/2013/11/there-is-no-thread.html)明白,*異步*並不意味着「在另一個線程上運行「。然後認識到'async'和'await'實際上是釋放你當前的線程去實現一些有用的功能,而不是在某種程度上阻塞並等待異步完成。 –
使它看起來一樣完全是async關鍵字的要點。沒有它,你必須編寫兩個方法,一個是methodB去的,另一個是在完成之後運行的。這可能很尷尬,第二種方法不能訪問第一個的任何局部變量。異步/等待它看起來更自然。編譯完成後,實際上最終會有兩種方法。隱藏類的一部分,局部變量現在是該類的字段。所有隱藏的很好,你只能像程序Ildasm.exe反編譯器看到它 –