Middle
C#-də async/await mexanizmi necə işləyir?
sobes.tech Süni İntellekt
AI-dan cavab
async/await mexanizmi, asinxron kodu yazmağa imkan verir ki, bu kod sinxron kimi görünür.
- Açar söz
async: Metodu asinxron kimi işarə edir. Belə metodawaitifadəsini daxil edə bilər. - Açar söz
await: AdətənTaskvə yaTask<T>qaytaran asinxron əməliyyatı çağırmadan əvvəl istifadə olunur.await-a çatanda, idarə çağıran metoda geri qaytarılır və sərbəst buraxılmış işçi axını başqa işləri görə bilər. Task/Task<T>: Asinxron əməliyyatın tamamlanması və onun nəticəsini (əgərTask<T>isə) vədə edir.awaitbu "vədiş"-in tamamlanmasını "gözləyir".- Vəziyyət maşını: Tərtibçi, asinxron metodu vəziyyət maşınına çevirir. Bu maşın
await-a çatdıqda metodun vəziyyətini saxlayır. - Davametmə: Gözlənilən tapşıq tamamlandıqda, icra mühiti qalan hissənin (davamın) icrasını planlaşdırır, bu ya işçi axınından və ya tutulmuşsa, eyni sinxronizasiya kontekstində.
- İdarəetmənin geri qaytarılması: Asinxron əməliyyat tamamlandıqdan sonra, idarə
await-dan sonra nöqtəyə geri qaytarılır və metodun icrası saxlanmış vəziyyətlə davam edir.
// Asinxron metod
async Task<int> GetLengthAsync(string url)
{
// HTTP müştərisi yaradılır
using var client = new HttpClient();
// URL-ə asinxron sorğu göndərilir
// Await sorğunun tamamlanmasını gözləyir, işçi axını bloklamadan
string content = await client.GetStringAsync(url);
// Davam, məzmun alındıqdan sonra icra olunur
return content.Length;
}
// Asinxron metoddan istifadə
async void Button_Click(object sender, EventArgs e)
{
// Await GetLengthAsync-in bitməsini gözləyir
// UI-axını bloklamır
int length = await GetLengthAsync("https://example.com");
// UI elementini yeniləyir
Label1.Text = $"Məzmunun uzunluğu: {length}";
}