Sobes.tech
Middle

Hogyan működik egy aszinkron módszer C#-ban?

sobes.tech MI

Válasz az MI-től

A C#-ban az aszinkron módszer lehetővé teszi olyan műveletek végrehajtását, amelyek hosszabb időt vehetnek igénybe (például bemenet/kimenet, hálózati kérések) anélkül, hogy blokkolná a fő végrehajtási szálat.

Amikor egy async kulcsszóval jelölt aszinkron módszert hívunk meg, az irányítás átkerül a hívó kódhoz, amíg az aszinkron művelet be nem fejeződik. A művelet háttérben fut (például szálkészlet vagy rendszer bemenet/kimenet mechanizmusok használatával).

Az await kulcsszó a módszeren belül megmutatja, hol szüneteltethető az aszinkron művelet. Amikor az végrehajtás eléri az await-et, az irányítás visszatér a hívó kódhoz, és a módszer folytatása ütemezve lesz, amikor a várt művelet befejeződik.

Az aszinkron művelet eredménye (vagy kivétel) később visszaküldésre kerül az aszinkron módszer folytatásába, ahol feldolgozásra kerül. Az aszinkron módszer állapotát automatikusan kezeli a C# fordító, amely végső automatává alakítja.

public async Task<string> GetDataAsync(string url)
{
    // Hosszú ideig tartó bemenet/kimenet művelet szimulációja
    using (var httpClient = new HttpClient())
    {
        string result = await httpClient.GetStringAsync(url); // await: a módszer végrehajtása szüneteltethető
        return result;
    }
}

// Aszinkron módszer hívási példája
public async Task ProcessDataAsync(string url)
{
    Console.WriteLine("Adatok betöltésének kezdete...");
    string data = await GetDataAsync(url); // Várakozás az aszinkron művelet befejezésére
    Console.WriteLine("Adatok betöltve: " + data.Length + " karakter.");
}