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