問題:
在單執行緒控制台應用程式中,如何因為執行緒被task.Wait()鎖定,await關鍵字之後的程式碼可以執行嗎?是否有新線程接管,或者主線程以某種方式離開task.Wait()來運行後續程式碼?
答案:
執行機制:
當像MyAsyncMethod()這樣的非同步方法中遇到awaawait時,剩餘的方法中的程式碼被視為延續。 wait 關鍵字有效暫停方法的執行,直到暫停的任務(例如 MyOtherAsyncMethod())完成。
執行緒延續:
預設情況下,延續非同步方法與await 關鍵字之前的程式碼在相同的同步上下文上運行。對於 UI 應用程序,這意味著等待之後的程式碼將在主 UI 執行緒上執行。
單執行緒應用程式中的場景:
中但是,在單執行緒控制台應用程式中,呼叫task.Wait() 會阻止主執行緒的執行。因此,await 之後的延續程式碼無法執行,因為執行緒被有效鎖定。
解決方案:
要允許延續程式碼在單執行緒應用程式中運行,您有兩個選擇:
以上是單線程應用程式中的'await”後如何恢復程式碼執行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!