Async e await: lavorare con codice asincrono
Padroneggi la programmazione asincrona per creare applicazioni reattive
Async e await: lavorare con codice asincrono è una lezione C# Academy gratuita su CoddyKit. Questa è la lezione 2 di 5. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento C# Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso C# Academy include 5 lezioni in totale.
Introduzione ad async e await
Async e Await: lavorare con il codice asincrono
Benvenuto alla lezione successiva! In questa lezione imparerà a utilizzare async e await in C# per scrivere codice asincrono che migliora la reattività e le prestazioni dell'applicazione. Iniziamo!

Che cos'è la programmazione asincrona?
Che cos'è la programmazione asincrona?
La programmazione asincrona consente alle operazioni di essere eseguite in modo indipendente senza bloccare il thread principale. È particolarmente utile per operazioni come la lettura di file, il recupero di dati da Internet o l'interazione con i database.
Punto chiave: il codice asincrono migliora la reattività dell'applicazione, soprattutto nelle applicazioni con interfaccia utente e nei server.
Comprendere async e await
Comprendere async e await
async e await sono parole chiave in C# che semplificano la programmazione asincrona:
- async: indica un metodo come asincrono.
- await: sospende l'esecuzione del metodo finché l'operazione attesa non viene completata.
Punto chiave: i metodi asincroni restituiscono sempre un Task o un Task<T>.
Creare un metodo asincrono
Creare un metodo asincrono
Creiamo un metodo asincrono per simulare un'operazione di lunga durata. Esempio:
Suggerimento: utilizzi Task.Delay() per simulare ritardi nelle operazioni asincrone.
using System;
using System.Threading.Tasks;
class Program {
static async Task Main() {
Console.WriteLine("Starting task...");
await PerformTask();
Console.WriteLine("Task completed!");
}
static async Task PerformTask() {
await Task.Delay(3000); // Simulates a 3-second delay
Console.WriteLine("Task is running...");
}
}
Restituire un valore da un metodo asincrono
Restituire un valore da un metodo asincrono
I metodi asincroni possono restituire valori utilizzando Task<T>. Esempio:
using System;
using System.Threading.Tasks;
class Program {
static async Task Main() {
int result = await CalculateSumAsync(10, 20);
Console.WriteLine("Result: " + result);
}
static async Task<int> CalculateSumAsync(int a, int b) {
await Task.Delay(1000); // Simulates a delay
return a + b;
}
}
Gestire le eccezioni nel codice asincrono
Gestire le eccezioni nel codice asincrono
Utilizzi try-catch per gestire le eccezioni nei metodi asincroni. Esempio:
using System;
using System.Threading.Tasks;
class Program {
static async Task Main() {
try {
await DivideAsync(10, 0);
} catch (Exception ex) {
Console.WriteLine("Error: " + ex.Message);
}
}
static async Task DivideAsync(int a, int b) {
await Task.Delay(1000);
if (b == 0) throw new DivideByZeroException("Cannot divide by zero.");
Console.WriteLine("Result: " + (a / b));
}
}
Sfida pratica
Sfida pratica
Crei un metodo asincrono che recuperi dati da un URL e ne visualizzi il contenuto. Esempio:
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program {
static async Task Main() {
string url = "https://jsonplaceholder.typicode.com/todos/1";
string data = await FetchDataAsync(url);
Console.WriteLine("Data: " + data);
}
static async Task<string> FetchDataAsync(string url) {
using HttpClient client = new HttpClient();
return await client.GetStringAsync(url);
}
}
Buone pratiche per la programmazione asincrona
Buone pratiche per la programmazione asincrona
Ecco alcune buone pratiche:
- Utilizzi
asynceawaitper le attività che coinvolgono operazioni di I/O o calcoli di lunga durata. - Eviti di bloccare il codice asincrono con
.Resulto.Wait(). - Gestisca le eccezioni per evitare errori non gestiti.
- Utilizzi
ConfigureAwait(false)nel codice delle librerie per evitare deadlock.
Suggerimento: mantenga i metodi asincroni concisi e focalizzati su una singola responsabilità.
Ottimo lavoro!
Ottimo lavoro!
Congratulazioni! Ha imparato a utilizzare async e await per scrivere codice asincrono in C#. Nella prossima lezione esploreremo thread e task per la programmazione parallela. Continuiamo a programmare!
Faccia clic su Continua per passare alla lezione successiva.

Domande Frequenti
La lezione «Async e await: lavorare con codice asincrono» è gratuita?
Sì — il testo completo di «Async e await: lavorare con codice asincrono» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso C# Academy, passa a CoddyKit PRO. Il corso C# Academy include 5 lezioni in totale.
Cosa imparerò in «Async e await: lavorare con codice asincrono»?
Padroneggi la programmazione asincrona per creare applicazioni reattive Eserciti C# Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare C# Academy?
Non è richiesta alcuna esperienza precedente. C# Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 5.
Quanto tempo richiede la lezione «Async e await: lavorare con codice asincrono»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione C# Academy?
Sì. Ogni lezione C# Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Generics in C#
- Async e await: lavorare con codice asincrono
- Capire thread e task
- Esplorare delegati e lambda
- Capire la reflection in C#