

第 4 版 (V4) 適用於 .NET 的 AWS SDK 已發行！

如需有關中斷變更和遷移應用程式的資訊，請參閱[遷移主題](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html)。

 [https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html)

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 以非同步方式進行程式設計 適用於 .NET 的 AWS SDK
<a name="sdk-net-async-api"></a>

 適用於 .NET 的 AWS SDK 使用*任務型非同步模式 (TAP)* 進行非同步實作。若要進一步了解 TAP，請參閱 https：//docs.microsoft.com 上的[任務型非同步模式 (TAP)](https://learn.microsoft.com/en-us/dotnet/standard/asynchronous-programming-patterns/task-based-asynchronous-pattern-tap)。

本主題概述如何在呼叫 AWS 服務用戶端時使用 TAP。

 適用於 .NET 的 AWS SDK API 中的非同步方法是根據 `Task`類別或 `Task<TResult>`類別的操作。如需這些類別的相關資訊，請參閱 docs.microsoft.com：//[https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task)[TResult](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1)。

當您的程式碼中呼叫這些 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`為非同步，您可以在 以外的函數上使用 `async`關鍵字，`Main`然後從該處呼叫 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`**的成員來取得資料。

您可以在 [建立簡單的應用程式](quick-start.md)區段 ([簡單的跨平台應用程式](quick-start-s3-1-cross.md) 和 [簡單的 Windows 型應用程式](quick-start-s3-1-winvs.md)) 和 中查看非同步呼叫 AWS 服務用戶端的完整範例[引導式程式碼範例高階程式庫和架構](tutorials-examples.md)。