Sobes.tech
Junior

C# da await kalit so'zi qanday ishlatiladi?

sobes.tech AI

AIdan javob

C# tilida await kalit so'zi asinxron operatsiyaning yakunlanishini bloklamasdan kutish uchun ishlatiladi.

await faqat async modifikatori bilan belgilangan asinxron metodlar ichida mumkin.

Ishga tushirilganda, await buyruqiga yetganda, boshqaruv oqimi chaqiruvchiga qaytadi va metod "to'xtatiladi"; kutayotgan vazifa tugaguniga qadar. Vazifa tugagach, metodning bajarilishi to'xtatilgan joydan davom etadi.

Bu chaqiruvchining (masalan, foydalanuvchi interfeysi yoki veb-server ipi) boshqa vazifalarni bajarish uchun bo'shatishga imkon beradi, bu esa ilovaning javob berish qobiliyatini va kengaytirilishini oshiradi.

public async Task<string> GetDataAsync()
{
    // Uzun davom etadigan asinxron operatsiyaning simulyatsiyasi
    await Task.Delay(2000);
    return "Ma'lumotlar olindi";
}

public async Task ProcessDataAsync()
{
    Console.WriteLine("Qayta ishlash boshlandi...");
    string result = await GetDataAsync(); // GetDataAsync tugashini kutadi, bloklamasdan
    Console.WriteLine($"Natija: {result}");
    Console.WriteLine("Qayta ishlash tugadi.");
}

await kalit so'zi quyidagilarga qo'llanilishi mumkin:

  1. Vazifalar (Task, Task<T>, ValueTask, ValueTask<T>): eng keng tarqalgan holat.
  2. awaitable turlar: GetAwaiter() metodiga ega bo'lgan obyektlar, IsCompleted, GetResult() va OnCompleted() metodlarini o'z ichiga olgan tur (davom etishni qo'llab-quvvatlash uchun).

await foydalanish asinxron kodni o'qilishi osonroq va sinxron kodga o'xshash qiladi, bu esa davom ettirish kodini qo'lda yozish yoki callbacklardan foydalanishni yo'q qiladi.