View a markdown version of this page

Amazon适用于 .NET 的 异步 API - Amazon SDK for .NET (V3)
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon SDK for .NET V3 已结束支持。

我们建议您迁移到 Amazon SDK for .NET V4。有关如何迁移的更多详细信息和信息,请参阅我们的终止支持公告

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon适用于 .NET 的 异步 API

Amazon SDK for .NET使用基于任务的异步模式(TAP)进行异步实现。要了解有关 TAP 的更多信息,请参阅 docs.microsoft.com 上的基于任务的异步模式(TAP)

本主题概述了在调用 Amazon 服务客户端时如何使用 TAP。

Amazon SDK for .NET API 中的异步方法是基于 Task 类或 Task<TResult> 类的操作。有关以下这些类的信息,请参阅 docs.microsoft.com:Task 类Task<TResult> 类

在您的代码中调用这些 API 方法时,必须在使用 async 关键字声明的函数中调用,如以下示例所示。

static async Task Main(string[] args) { ... // Call the function that contains the asynchronous API method. // Could also call the asynchronous API method directly from Main // because Main is declared async var response = await ListBucketsAsync(); Console.WriteLine($"Number of buckets: {response.Buckets.Count}"); ... } // Async method to get a list of Amazon S3 buckets. private static async Task<ListBucketsResponse> ListBucketsAsync() { ... var response = await s3Client.ListBucketsAsync(); return response; }

如前面的代码片段所示,async 声明的首选范围是 Main 函数。设置此 async 范围可确保要求对 Amazon 服务客户端的调用都是异步的。如果由于某种原因无法声明 Main 为异步,则可以在除 Main 之外的函数上使用 async 关键字,然后从那里调用 API 方法,如以下示例所示。

static void Main(string[] args) { ... Task<ListBucketsResponse> response = ListBucketsAsync(); Console.WriteLine($"Number of buckets: {response.Result.Buckets.Count}"); ... } // Async method to get a list of Amazon S3 buckets. private static async Task<ListBucketsResponse> ListBucketsAsync() { ... var response = await s3Client.ListBucketsAsync(); return response; }

请注意使用此模式时 Main 所需的特殊 Task<> 语法。此外,您必须使用响应的 Result 成员来获取数据。

您可以在快速了解部分(简单跨平台应用程序基于 Windows 的简单应用程序)和带有指导的代码示例中查看对 Amazon 服务客户端进行异步调用的完整示例。