

버전 4(V4) AWS SDK for .NET 가 릴리스되었습니다.

변경 사항 해제 및 애플리케이션 마이그레이션에 대한 자세한 내용은 [마이그레이션 주제를](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)

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 를 사용하여 비동기식 프로그래밍 AWS SDK for .NET
<a name="sdk-net-async-api"></a>

는 비*동기 구현에 작업 기반 비동기 패턴(TAP)*을 AWS SDK for .NET 사용합니다. 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 클래스](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task), [Task<TResult> 클래스](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`을 비동기식으로 선언할 수 없는 경우 다음 예제와 같이 `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).