首頁 > 後端開發 > C++ > C# 中的「await」關鍵字後如何恢復程式碼執行?

C# 中的「await」關鍵字後如何恢復程式碼執行?

Susan Sarandon
發布: 2024-12-31 08:30:11
原創
901 人瀏覽過

How Does Code Execution Resume After an `await` Keyword in C#?

理解await關鍵字之後的程式碼執行

在單執行緒應用程式中,await關鍵字可能會令人困惑。當程式碼在非同步方法中遇到await 關鍵字時,它會回到呼叫方法並將控制權交給UI 執行緒。然而,理解await之後的程式碼是如何執行的可能具有挑戰性。

與主執行緒保持鎖定的假設相反,await之後的程式碼可能由不同的執行緒執行。此行為由同步上下文決定。預設情況下,Task 的可等待模式會採用等待表達式時目前的同步上下文。

例如,如果程式碼在 UI 執行緒內執行,則延續(await 之後的部分)將在相同 UI 執行緒上恢復執行。但是,在執行緒池執行緒的情況下,延續可能不一定在同一執行緒上恢復。

認識到阻塞 UI 執行緒至關重要,就像提供的程式碼中的 Wait() 呼叫一樣樣本,可以阻止繼續執行。在任務可能涉及目前執行緒上的工作且其完成狀態未知的情況下,不建議使用 Wait() 或 Result。

為了避免依賴預設同步上下文,可以使用 Task.ConfigureAwait 方法可以使用。這允許您指定延續可以在任何執行緒上執行,使其適合缺乏執行緒首選項的庫方法。透過利用ConfigureAwait(false)語法,您表明希望將延續與當前上下文分離,從而促進更健壯的多執行緒程式碼。

以上是C# 中的「await」關鍵字後如何恢復程式碼執行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板