Cum funcționează o metodă asincronă în C#?
sobes.tech AI
Răspuns de la AI
Metoda asincronă în C# permite executarea operațiunilor care pot dura o perioadă lungă de timp (de exemplu, intrare/ieșire, solicitări de rețea), fără a bloca firul principal de execuție.
Când se apelează o metodă asincronă marcată cu cuvântul cheie async, controlul este transferat către codul care o apelează până când operațiunea asincronă se finalizează. Operațiunea se execută în fundal (de exemplu, folosind un pool de fire sau mecanisme de intrare/ieșire ale sistemului).
Cuvântul cheie await din interiorul metodei asincrone indică locul unde operațiunea asincronă poate fi suspendată. Când execuția ajunge la await, controlul este returnat către codul apelant, iar continuarea metodei este planificată pentru a fi executată când operațiunea așteptată se încheie.
Rezultatul operațiunii asincrone (sau o excepție) este apoi transmis înapoi la continuarea metodei asincrone, unde este procesat. Starea metodei asincrone este gestionată automat de compilatorul C#, care o transformă într-un automat finit.
public async Task<string> GetDataAsync(string url)
{
// Simulare a unei operațiuni de intrare/ieșire prelungite
using (var httpClient = new HttpClient())
{
string result = await httpClient.GetStringAsync(url); // await: execuția metodei poate fi suspendată
return result;
}
}
// Exemplu de apelare a unei metode asincrone
public async Task ProcessDataAsync(string url)
{
Console.WriteLine("Începutul încărcării datelor...");
string data = await GetDataAsync(url); // Așteptarea finalizării operațiunii asincrone
Console.WriteLine("Datele au fost încărcate: " + data.Length + " caractere.");
}