Come funziona un metodo asincrono in C#?
sobes.tech AI
Risposta dell'AI
Il metodo asincrono in C# consente di eseguire operazioni che possono richiedere molto tempo (ad esempio, input/output, richieste di rete) senza bloccare il thread principale di esecuzione.
Quando si chiama un metodo asincrono contrassegnato con la parola chiave async, il controllo viene trasferito al codice chiamante fino al completamento dell'operazione asincrona. L'operazione viene eseguita in background (ad esempio, utilizzando un pool di thread o meccanismi di input/output di sistema).
La parola chiave await all'interno del metodo asincrono indica dove l'operazione asincrona può essere sospesa. Quando l'esecuzione raggiunge await, il controllo viene restituito al codice chiamante, e la continuazione del metodo viene pianificata per essere eseguita quando l'operazione attesa si conclude.
Il risultato dell'operazione asincrona (o un'eccezione) viene quindi restituito alla continuazione del metodo asincrono, dove viene elaborato. Lo stato del metodo asincrono è gestito automaticamente dal compilatore C#, che lo trasforma in una macchina a stati finiti.
public async Task<string> GetDataAsync(string url)
{
// Simulazione di un'operazione di input/output prolungata
using (var httpClient = new HttpClient())
{
string result = await httpClient.GetStringAsync(url); // await: l'esecuzione del metodo può essere sospesa
return result;
}
}
// Esempio di chiamata a un metodo asincrono
public async Task ProcessDataAsync(string url)
{
Console.WriteLine("Inizio caricamento dati...");
string data = await GetDataAsync(url); // Attesa del completamento dell'operazione asincrona
Console.WriteLine("Dati caricati: " + data.Length + " caratteri.");
}