

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. ](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html)

 [![Orange button with text "Click here for details".](https://docs.aws.amazon.com/it_it/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)

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
<a name="sdk-net-async-api"></a>

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. ](https://learn.microsoft.com/en-us/dotnet/standard/asynchronous-programming-patterns/task-based-asynchronous-pattern-tap)

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) [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)

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 con`Result`, `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 utilizzare`await`, come mostrato nel primo esempio. Per informazioni dettagliate, vedi [Usare async/await correttamente](net-dg-performance.md#net-dg-performance-async).

Puoi vedere esempi completi di chiamate asincrone ai client di AWS servizio nelle [Creazione di un'applicazione semplice](quick-start.md) sezioni ([Semplice app multipiattaforma](quick-start-s3-1-cross.md)e) e [Semplice app basata su Windows](quick-start-s3-1-winvs.md) in. [Esempi di codice guidati](tutorials-examples.md)