0Pricing
C# Academy · 课时

Async 和 Await:使用异步代码

掌握异步编程,构建响应迅速的应用

Async 和 Await:使用异步代码 是 CoddyKit 上的免费 C# Academy 课时。 这是第 2 节课,共 5 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 C# Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 C# Academy 课程共包含 5 节课。

async 和 await 简介

async 和 await:处理异步代码

欢迎来到下一课!在本课中,您将学习如何在 C# 中使用 async 和 await 编写异步代码,从而提高应用程序的响应能力和性能。让我们开始吧!

Async 和 Await:使用异步代码 — 插图 1

什么是异步编程?

什么是异步编程?

异步编程允许任务独立运行,而不会阻塞主线程。这对于读取文件、从互联网获取数据或与数据库交互等任务尤其有用。

重点:异步代码可以提高应用程序的响应能力,尤其适用于用户界面和服务器应用程序。

理解 async 和 await

理解 async 和 await

Async 和 await 是 C# 中用于简化异步编程的关键字:

  • async:将方法标记为异步方法。
  • await:暂停方法的执行,直到等待的任务完成。

重点:异步方法始终返回 Task 或 Task<T>。

创建异步方法

创建异步方法

让我们创建一个异步方法来模拟长时间运行的任务。示例:

提示:使用 Task.Delay() 来模拟异步操作中的延迟。

using System;
using System.Threading.Tasks;

class Program {
    static async Task Main() {
        Console.WriteLine("Starting task...");
        await PerformTask();
        Console.WriteLine("Task completed!");
    }

    static async Task PerformTask() {
        await Task.Delay(3000); // Simulates a 3-second delay
        Console.WriteLine("Task is running...");
    }
}

从异步方法返回值

从异步方法返回值

异步方法可以使用 Task<T> 返回值。示例:

using System;
using System.Threading.Tasks;

class Program {
    static async Task Main() {
        int result = await CalculateSumAsync(10, 20);
        Console.WriteLine("Result: " + result);
    }

    static async Task<int> CalculateSumAsync(int a, int b) {
        await Task.Delay(1000); // Simulates a delay
        return a + b;
    }
}

处理异步代码中的异常

处理异步代码中的异常

使用 try-catch 处理异步方法中的异常。示例:

using System;
using System.Threading.Tasks;

class Program {
    static async Task Main() {
        try {
            await DivideAsync(10, 0);
        } catch (Exception ex) {
            Console.WriteLine("Error: " + ex.Message);
        }
    }

    static async Task DivideAsync(int a, int b) {
        await Task.Delay(1000);
        if (b == 0) throw new DivideByZeroException("Cannot divide by zero.");
        Console.WriteLine("Result: " + (a / b));
    }
}

练习挑战

练习挑战

创建一个从 URL 获取数据并显示其内容的异步方法。示例:

using System;
using System.Net.Http;
using System.Threading.Tasks;

class Program {
    static async Task Main() {
        string url = "https://jsonplaceholder.typicode.com/todos/1";
        string data = await FetchDataAsync(url);
        Console.WriteLine("Data: " + data);
    }

    static async Task<string> FetchDataAsync(string url) {
        using HttpClient client = new HttpClient();
        return await client.GetStringAsync(url);
    }
}

异步编程最佳实践

异步编程最佳实践

以下是一些最佳实践:

  • 对于涉及输入输出操作或长时间运行计算的任务,请使用 async 和 await。
  • 避免使用 .Result 或 .Wait() 阻塞异步代码。
  • 处理异常,防止出现未处理的错误。
  • 在库代码中使用 ConfigureAwait(false),避免发生死锁。

提示:让您的异步方法保持简洁,并专注于单一职责。

做得很好!

做得很好!

恭喜您!您已经学会了如何使用 async 和 await 在 C# 中编写异步代码。在下一课中,我们将探索并行编程中的线程和任务。让我们继续编写代码吧!

点击继续进入下一课。

Async 和 Await:使用异步代码 — 插图 10

常见问题解答

「Async 和 Await:使用异步代码」课时是免费的吗?

是的 — 「Async 和 Await:使用异步代码」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 C# Academy 课程的其余内容,请升级到 CoddyKit PRO。 C# Academy 课程共包含 5 节课。

「Async 和 Await:使用异步代码」这节课中我会学到什么?

掌握异步编程,构建响应迅速的应用 你通过在浏览器中直接运行的动手代码来练习 C# Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 C# Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 C# Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 5 节。

「Async 和 Await:使用异步代码」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 C# Academy 课中编写并运行代码吗?

能。每节 C# Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. C# 中的泛型
  2. Async 和 Await:使用异步代码
  3. 理解线程和任务
  4. 探索委托和 Lambda
  5. 理解 C# 中的反射
← 返回 C# Academy