View a markdown version of this page

Programmazione asincrona utilizzando AWS SDK per .NET - AWS SDK per .NET (V4)

La versione 4 (V4) di è stata rilasciata! AWS SDK per .NET

Per informazioni sulle modifiche sostanziali e sulla migrazione delle applicazioni, consulta l'argomento sulla migrazione.

Orange button with text "Click here for details".

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Programmazione asincrona utilizzando AWS SDK per .NET

The AWS SDK per .NET utilizza l'Task-based Asynchronous Pattern (TAP) per la sua implementazione asincrona. Per ulteriori informazioni sul TAP, vedere Task-based Asynchronous Pattern (TAP) su docs.microsoft.com.

Questo argomento offre una panoramica di come utilizzare TAP nelle chiamate ai clienti del servizio. AWS

I metodi asincroni dell' AWS SDK per .NET API sono operazioni basate sulla Task classe o sulla classe. Task<TResult> <TResult>Per informazioni su queste classi, consultate docs.microsoft.com: classe Task, classe Task. https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1

Quando questi metodi API vengono richiamati nel codice, devono essere richiamati all'interno di una funzione dichiarata con la async parola chiave, come mostrato nell'esempio seguente.

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

Come mostrato nel frammento di codice precedente, l'ambito preferito per la async dichiarazione è la funzione. Main L'impostazione di questo async ambito garantisce che tutte le chiamate ai client di AWS servizio debbano essere asincrone. Se per qualche motivo non puoi Main dichiarare di essere asincrono, puoi utilizzare la async parola chiave su funzioni diverse da Main e quindi chiamare i metodi API da lì, come mostrato nell'esempio seguente.

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

Nota la Task<> sintassi speciale necessaria Main quando usi questo modello. Inoltre, è necessario utilizzare il Result membro della risposta per ottenere i dati.

avvertimento

Il blocco di una chiamata asincrona conResult, Wait() o GetAwaiter().GetResult() è un pattern di sincronizzazione su asincrono. È accettabile solo in una console semplice che non ha. Main SynchronizationContext InASP.NET,Windows Forms, e WPFBlazor WebAssembly, questo schema può causare il blocco o il blocco dei thread. Entrambi i risultati causano il blocco dell'applicazione. Preferisci dichiarare Main come async e utilizzareawait, come mostrato nel primo esempio. Per informazioni dettagliate, vedi Usare async/await correttamente.

Puoi vedere esempi completi di chiamate asincrone ai client di AWS servizio nelle Creazione di un'applicazione semplice sezioni (Semplice app multipiattaformae) e Semplice app basata su Windows in. Esempi di codice guidati