

La version 4 (V4) du AWS SDK pour .NET est sortie \!

Pour plus d'informations sur l'interruption des modifications et la migration de vos applications, consultez la rubrique [ sur la ](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html) migration.

 [![Orange button with text "Click here for details".](https://docs.aws.amazon.com/fr_fr/sdk-for-net/v4/developer-guide/images/BannerButton_less-round.png)](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html)

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Programmation asynchrone à l'aide du AWS SDK pour .NET
<a name="sdk-net-async-api"></a>

Le AWS SDK pour .NET utilise le modèle * Task-based asynchrone (TAP) * pour son implémentation asynchrone. Pour en savoir plus sur le TAP, consultez la section Modèle [ Task-based asynchrone (TAP) ](https://learn.microsoft.com/en-us/dotnet/standard/asynchronous-programming-patterns/task-based-asynchronous-pattern-tap) sur docs.microsoft.com.

Cette rubrique vous donne un aperçu de l'utilisation de TAP dans vos appels aux clients AWS du service.

Les méthodes asynchrones de l' AWS SDK pour .NET API sont des opérations basées sur la `Task` classe ou la `Task<TResult>` classe. <TResult>Consultez docs.microsoft.com pour plus d'informations sur les classes suivantes : Classe de tâches, Classe [ de ](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task) tâches. [https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1)

Lorsque ces méthodes d'API sont appelées dans votre code, elles doivent être appelées dans une fonction déclarée avec le `async` mot clé, comme illustré dans l'exemple suivant.

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

Comme indiqué dans l'extrait de code précédent, la portée préférée pour la `async` déclaration est la `Main` fonction. La définition de cette `async` étendue garantit que tous les appels aux clients de AWS service doivent être asynchrones. Si, pour une raison quelconque, vous ne pouvez pas déclarer `Main` que vous êtes asynchrone, vous pouvez utiliser le `async` mot clé sur d'autres fonctions, `Main` puis appeler les méthodes d'API à partir de là, comme illustré dans l'exemple suivant. 

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

Notez la `Task<>` syntaxe spéciale requise `Main` lorsque vous utilisez ce modèle. De plus, vous devez utiliser le ** `Result` ** membre de la réponse pour obtenir les données.

**Avertissement**  
Le blocage d'un appel asynchrone avec `Result``Wait()`, ou `GetAwaiter().GetResult()` est un modèle de * synchronisation * sur asynchrone. Cela n'est acceptable que dans une console simple `Main` qui n'en a pas`SynchronizationContext`. DansASP.NET,Windows Forms, et WPFBlazor WebAssembly, ce modèle peut affamer le pool de threads ou le bloquer. L'un ou l'autre des résultats entraîne le blocage de votre application. Préférez déclarer `Main` comme `async` et utiliser`await`, comme indiqué dans le premier exemple. Pour en savoir plus, consultez [Utiliser async/await correctement](net-dg-performance.md#net-dg-performance-async).

Vous pouvez consulter des exemples complets d'appels asynchrones à des clients AWS de service dans les [Création d'une application simple](quick-start.md) sections ([Application multiplateforme simple](quick-start-s3-1-cross.md)et[Application simple basée sur Windows](quick-start-s3-1-winvs.md)) et dans. [Exemples de code guidés](tutorials-examples.md)