Junior — Middle
Hogyan hajtódik végre egy aszinkron függvény a végrehajtási szálak kontextusában?
sobes.tech MI
Válasz az MI-től
A C#-ban az aszinkron funkciókat általában az async és await kulcsszavak segítségével valósítják meg. Egy ilyen funkció hívásakor egy (Task) feladat jön létre, amely függetlenül fut a fő szálaktól.
Az aszinkron funkció belsejében, amikor az await-hez ér, a végrehajtás szünetel, és az irányítás visszatér a hívó kódhoz. Amikor a várt művelet befejeződik, a funkció ott folytatódik, ahol megszakadt.
Fontos megjegyezni, hogy az aszinkronitás nem feltétlenül jelent új szál létrehozását. Gyakran egy szálat használnak, amely váltogat a feladatok között, anélkül, hogy blokkolná a fő UI vagy feldolgozó szálat.
Példa:
public async Task<string> GetDataAsync()
{
var data = await DownloadDataAsync(); // aszinkron betöltés
return data;
}
Itt a DownloadDataAsync elindul, és a szál nem blokkolódik, amíg az adatok betöltődnek.