的版本 4 (V4) Amazon SDK for .NET 已经发布!
有关重大更改和迁移应用程序的信息,请参阅迁移主题。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用异步编程 Amazon SDK for .NET
Amazon SDK for .NET 使用基于任务的异步模式 (TAP) 进行异步实现。要了解有关 TAP 的更多信息,请参阅 docs.microsoft.com 上的基于任务的异步模式(TAP)
本主题概述了如何在呼叫 Amazon 服务客户时使用 TAP。
Amazon SDK for .NET API 中的异步方法是基于Task类或Task<TResult>类的操作。有关这些类的信息,请参阅 docs.microsoft.com:任务类、任务< > 类
在您的代码中调用这些 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 服务客户端进行异步调用的完整示例引导式代码示例。