async
和 await
的使用時機和方法理解 Async 和 Await
在 C# 中,async
和 await
是強大的關鍵字,它們增強了代碼的可讀性並促進了異步任務的執行。使用它們並不等同於創建後台線程,因為它們利用了一種稱為異步狀態機的不同機制。
示例代碼詳解
讓我們分析提供的代碼片段,以演示 async
和 await
的工作方式:
<code class="language-csharp">private async void button1_Click(object sender, EventArgs e) { Task<int> access = DoSomethingAsync(); // 此处执行与任务无关的逻辑 int a = 1; // 立即执行,因为它不依赖于 DoSomethingAsync() int x = await access; // 等待 DoSomethingAsync() 完成 } async Task<int> DoSomethingAsync() { await Task.Delay(5000); // 使线程休眠 5 秒 return 1; }</code>
行為解釋
button1_Click
方法標記為 async
以啟用其異步執行。 DoSomethingAsync()
是一個異步任務,不會阻塞主線程。 DoSomethingAsync()
在後台運行時,可以執行獨立的邏輯。 await access;
會導致 button1_Click
的執行暫停,直到 DoSomethingAsync()
完成。 DoSomethingAsync()
完成,主線程將恢復執行並將 await
的結果賦值給 x
。 async
和 await
的機制
當使用 async
和 await
時,編譯器會生成一個異步狀態機。此狀態機管理任務的掛起和恢復,允許以簡化方式編寫和執行異步操作。
Async 和 Await 的優勢
以上是在C#中,您何時以及如何使用異步和等待?的詳細內容。更多資訊請關注PHP中文網其他相關文章!