¡Ya está disponible la AWS SDK para .NET versión 4 (V4) del!
Para obtener información sobre los cambios importantes y la migración de sus aplicaciones, consulte el tema sobre https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html migración.
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.
Programación asincrónica mediante AWS SDK para .NET
AWS SDK para .NET Utiliza el patrón Task-based asincrónico (TAP) para su implementación asincrónica. Para obtener más información sobre el TAP, consulte Task-based Asynchronous Pattern (TAP) en docs.microsoft.com.
En este tema se ofrece una descripción general de cómo usar el TAP en las llamadas a los clientes de servicio. AWS
Los métodos asincrónicos 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 Task
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.
aviso
El bloqueo de una llamada asincrónica conResult, Wait() o es un patrón de sincronización sobre asíncrona. GetAwaiter().GetResult() Solo es aceptable en una consola simple que no lo tenga. Main SynchronizationContext EnASP.NET,,Windows Forms, y WPFBlazor WebAssembly, este patrón puede privar al grupo de subprocesos o al punto muerto. Cualquiera de los dos resultados hace que tu aplicación se bloquee. Prefiere Main declararlo como async y usarloawait, como se muestra en el primer ejemplo. Para obtener más información, consulte Úselo async/await correctamente.
Puedes ver ejemplos completos de llamadas asincrónicas a clientes de AWS servicio en la Crear una aplicación sencilla sección (Aplicación multiplataforma sencillayAplicación sencilla basada en Windows) y en. Ejemplos de código guiados