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中文网其他相关文章!