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ó:
- Feladatokra (Task, Task<T>, ValueTask, ValueTask<T>): leggyakoribb eset.
- awaitable típusokra: olyan objektumokra, amelyek rendelkeznek
GetAwaiter()metódussal, és egy olyan típust adnak vissza, amely tartalmazza azIsCompleted,GetResult()ésOnCompleted()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.