翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
.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
これらの 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 ベースのアプリ」) と「ガイダンス付きのコード例」を参照してください。