Sobes.tech
Junior

Hogyan használható az await kulcsszó C#-ban?

sobes.tech MI

Válasz az MI-től

A await kulcsszó a C#-ban aszinkron művelet befejezésének blokkolás nélküli várakozására szolgál.

A await használata csak async módosítóval ellátott aszinkron módszerekben lehetséges.

Amikor a végrehajtás eléri a await utasítást, az irányítás visszatér a hívó félhez, és a metódus "szünetel" addig, amíg a várt feladat be nem fejeződik. A feladat befejezése után a metódus végrehajtása onnan folytatódik, ahol abbamaradt.

Ez lehetővé teszi, hogy a hívó szál (például a felhasználói felület szála vagy a web szerver szála) más feladatokat hajtson végre, javítva az alkalmazás reakciókészségét és skálázhatóságát.

public async Task<string> GetDataAsync()
{
    // Hosszú ideig tartó aszinkron művelet szimulációja
    await Task.Delay(2000);
    return "Adatok érkeztek";
}

public async Task ProcessDataAsync()
{
    Console.WriteLine("Feldolgozás kezdete...");
    string result = await GetDataAsync(); // Várakozás a GetDataAsync befejezésére blokkolás nélkül
    Console.WriteLine($"Eredmény: {result}");
    Console.WriteLine("Feldolgozás befejeződött.");
}

A await kulcsszó alkalmazható:

  1. Feladatokra (Task, Task<T>, ValueTask, ValueTask<T>): leggyakoribb eset.
  2. awaitable típusokra: olyan objektumokra, amelyek rendelkeznek GetAwaiter() metódussal, és egy olyan típust adnak vissza, amely tartalmazza az IsCompleted, GetResult() és OnCompleted() metódusokat (a folytatás támogatására).

A await használata olvashatóbbá és szinkron kódhoz hasonlóvá teszi az aszinkron kódot, kiküszöbölve a folytató kód manuális írásának vagy callback-ek használatának szükségességét.