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 migration.
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
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)
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
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 ResultWait(), 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 pasSynchronizationContext. 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 utiliserawait, comme indiqué dans le premier exemple. Pour en savoir plus, consultez Utiliser async/await correctement.
Vous pouvez consulter des exemples complets d'appels asynchrones à des clients AWS de service dans les Création d'une application simple sections (Application multiplateforme simpleetApplication simple basée sur Windows) et dans. Exemples de code guidés