在 C#中async 和 await

在 C# 中, async 和 await 是用于异步编程的关键字,它们提供了一种简单的方式来编写异步代码,避免了回调函数的复杂性和混乱性。

Async

async 关键字用于修饰方法,表示该方法是一个异步方法。异步方法在执行时,不会阻塞主线程,而是通过创建一个新的执行上下文来在后台执行。在异步方法中,可以使用 await 关键字等待异步操作的完成。

以下是一个简单的示例,演示如何使用 async 关键字定义一个异步方法:

public async Task<string> GetResponseAsync()
{
    
    
    HttpClient client = new HttpClient();
    string response = await client.GetStringAsync("https://www.example.com");
    return response;
}

上述代码中, GetResponseAsync 方法是一个异步方法,它通过创建一个 HttpClient 实例并调用其 GetStringAsync 方法来异步获取指定 URL 的响应内容。

Await

await 关键字用于等待异步操作的完成。当在异步方法中调用 await 时,该方法会暂停执行,直到异步操作完成,并返回异步操作的结果。在等待异步操作完成期间,异步方法将不会阻塞主线程,而是允许主线程继续执行其他任务。

以下是一个简单的示例,演示如何使用 await 关键字等待异步操作的完成:

public async Task<string> GetResponseAsync()
{
    
    
    HttpClient client = new HttpClient();
    string response = await client.GetStringAsync("https://www.example.com");
    return response;
}

public async Task<string> GetResponseLengthAsync()
{
    
    
    string response = await GetResponseAsync();
    return response.Length.ToString();
}

上述代码中, GetResponseLengthAsync 方法首先调用 GetResponseAsync 方法异步获取响应内容,并使用 await 等待异步操作的完成。然后,它使用获取的响应内容计算其长度,并将其作为字符串返回。


注意,async 和 await 关键字只能在异步方法中使用,并且异步方法必须返回一个 Task 或 Task 对象,以便异步操作的结果可以被捕获和处理。

猜你喜欢

转载自blog.csdn.net/ultramand/article/details/130440238