

 AWS SDK for .NET V3 がメンテナンスモードになりました。

[AWS SDK for .NET V4](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/welcome.html) に移行することをお勧めします。移行方法の詳細と情報については、[メンテナンスモードのお知らせ](https://aws.amazon.com/blogs/developer/aws-sdk-for-net-v3-maintenance-mode-announcement/)を参照してください。

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

# AWS.NET の 非同期 API
<a name="sdk-net-async-api"></a>

AWS SDK for .NET では、比同期処理の実装のために**タスクベースの非同期パターン (TAP) を使用します。TAP の詳細については、docs.microsoft.com の「[タスクベースの非同期パターン (TAP)](https://learn.microsoft.com/en-us/dotnet/standard/asynchronous-programming-patterns/task-based-asynchronous-pattern-tap)」を参照してください。

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

AWS SDK for .NET API の非同期メソッドは、`Task` クラスまたは `Task<TResult>` クラスに基づいた処理です。[Task class](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task) クラスおよび [Task<TResult> class](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1) クラスの詳細については、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 サービスクライアントに対する非同期呼び出しの完全な例については、[クイックツアーに参加する](quick-start.md)のセクション (「[シンプルなクロスプラットフォームアプリ](quick-start-s3-1-cross.md)」および「[シンプルな Windows ベースのアプリ](quick-start-s3-1-winvs.md)」) と「[ガイダンス付きのコード例高レベルライブラリとフレームワーク](tutorials-examples.md)」を参照してください。