

La AWS SDK para .NET V3 ha entrado en modo de mantenimiento.

Le recomendamos que migre a la [AWS SDK para .NET V4](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/welcome.html). Para obtener información y detalles adicionales sobre cómo migrar, consulta nuestro [anuncio sobre el modo de mantenimiento](https://aws.amazon.com/blogs/developer/aws-sdk-for-net-v3-maintenance-mode-announcement/).

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.

# AWSAPI asincrónicas de para .NET
<a name="sdk-net-async-api"></a>

AWS SDK para .NET utiliza el *patrón asincrónico basado en tareas (TAP)* en su implementación asincrónica. 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 información general sobre cómo utilizar el TAP en las llamadas a clientes de servicio de AWS.

Los métodos asincrónicos de la API de AWS SDK para .NET son operaciones basadas en las clases `Task` o `Task<TResult>`. Consulte docs.microsoft.com para obtener información sobre estas clases: [Clase Task](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task), [Clase Task<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.

Encontrará ejemplos completos de llamadas asincrónicas a clientes de servicio de AWS en la sección [Recorrido rápido](quick-start.md) ([Aplicación multiplataforma sencilla](quick-start-s3-1-cross.md) y [Aplicación sencilla basada en Windows](quick-start-s3-1-winvs.md)) y en [Ejemplos de código con orientacionesBibliotecas y marcos de trabajo de alto nivel](tutorials-examples.md).