Sobes.tech
Middle

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.");
}