Kaip veikia asinchroninis metodas C#?
sobes.tech AI
Atsakymas iš AI
C# kalboje asinchroninis metodas leidžia vykdyti operacijas, kurios gali užtrukti ilgą laiką (pvz., įvestis/išvestis, tinklo užklausos), nesustabdant pagrindinio vykdymo srauto.
Kviečiant asinchroninį metodą, pažymėtą raktiniu žodžiu async, kontrolė perduodama kviečiančiam kodui iki kol asinchroninė operacija nebaigiama. Operacija vykdoma foniniame režime (pvz., naudojant siūlų baseiną arba sistemos įvesties/išvesties mechanizmus).
await raktinis žodis asinchroninio metodo viduje nurodo vietą, kurioje operacija gali būti sustabdyta. Kai vykdymas pasiekia await, kontrolė grąžinama kviečiančiam kodui, o metodo tęsimas planuojamas įvykdyti, kai laukiama operacija baigsis.
Asinchroninės operacijos rezultatas (arba išimtis) vėliau grąžinamas atgal į asinchroninio metodo tęsinius, kur jis apdorojamas. Asinchroninio metodo būsena automatiškai valdoma C# kompiliatoriaus, kuris ją paverčia galutiniu automatu.
public async Task<string> GetDataAsync(string url)
{
// Ilgai trunkančios įvesties/išvesties operacijos simuliacija
using (var httpClient = new HttpClient())
{
string result = await httpClient.GetStringAsync(url); // await: metodo vykdymas gali būti sustabdytas
return result;
}
}
// Pavyzdys, kaip iškviesti asinchroninį metodą
public async Task ProcessDataAsync(string url)
{
Console.WriteLine("Pradėta duomenų įkėlimas...");
string data = await GetDataAsync(url); // Laukiama, kol baigsis asinchroninė operacija
Console.WriteLine("Duomenys įkelti: " + data.Length + " simbolių.");
}