

¡Se AWS SDK para .NET ha publicado la versión 4 (V4) del\!

Para obtener información sobre los cambios más importantes y la migración de sus aplicaciones, consulte el [tema sobre migración](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)

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Programar de forma asíncrona mediante el AWS SDK para .NET
<a name="sdk-net-async-api"></a>

 AWS SDK para .NET Utiliza el *patrón asíncrono basado en tareas (TAP) para su implementación asíncrona.* Para obtener más información sobre el TAP, consulte [Patrón asincrónico basado en tareas (TAP)](https://learn.microsoft.com/en-us/dotnet/standard/asynchronous-programming-patterns/task-based-asynchronous-pattern-tap) en docs.microsoft.com.

En este tema se ofrece una descripción general de cómo utilizar el TAP en las llamadas a los clientes del servicio. AWS 

Los métodos asíncronos de la AWS SDK para .NET API son operaciones basadas en la `Task` clase o la clase. `Task<TResult>` [Consulte docs.microsoft.com para obtener información sobre estas clases: clase [Tarea](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task), Task< > clase. TResult](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1)

Cuando estos métodos de API se invocan en el código, se deben llamar dentro de una función que esté declarada con la palabra clave `async`, como se muestra en el siguiente ejemplo.

```
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;
}
```

Como se muestra en el fragmento de código anterior, el ámbito preferido de la declaración de `async` es la función `Main`. Establecer este ámbito `async` garantiza que todas las llamadas a clientes de servicio de AWS van a ser asincrónicas obligatoriamente. Si `Main` no se puede declarar como asincrónico por algún motivo, se puede usar la palabra clave `async` en otras funciones distintas de `Main` y, a continuación, llamar a los métodos de la API desde esas funciones, como se muestra en el siguiente ejemplo. 

```
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;
}
```

Fíjese en la sintaxis de `Task<>` especial que se necesita en `Main` al usar este patrón. Además, para obtener los datos, debe usar el miembro **`Result`** de la respuesta.

Puede ver ejemplos completos de llamadas asincrónicas a clientes de AWS servicio en la sección (y) y en. [Crear una aplicación sencilla](quick-start.md) [Aplicación multiplataforma sencilla](quick-start-s3-1-cross.md) [Aplicación sencilla basada en Windows](quick-start-s3-1-winvs.md) [Ejemplos de código guiadosBibliotecas y marcos de trabajo de alto nivel](tutorials-examples.md)