.NET の AWS 非同期 API - AWS SDK for .NET

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

.NET の AWS 非同期 API

AWS SDK for .NET では、比同期処理の実装のためにタスクベースの非同期パターン (TAP) を使用します。TAP の詳細については、docs.microsoft.com の「タスクベースの非同期パターン (TAP)」を参照してください。

このトピックではAWS サービスクライアントに対する呼び出しで TAP を使用する方法の概要を説明します。

AWS SDK for .NET API の非同期メソッドは、Task クラスまたは Task<TResult> クラスに基づいた処理です。Task class クラスおよび Task<TResult> class クラスの詳細については、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 スコープを設定する場合、AWS サービスクライアントに対するすべての呼び出しが非同期である必要があります。何らかの理由で 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 メンバーを使用してデータを取得する必要があります。

AWS サービスクライアントに対する非同期呼び出しの完全な例については、クイックツアーをするのセクション (「シンプルなクロスプラットフォームアプリ」および「シンプルな Windows ベースのアプリ」) と「ガイダンス付きのコード例」を参照してください。