๐น 1. async va await
async โ metodni asinxron qilish uchun yoziladi.
await โ kutish, lekin bloklamasdan kutish.
public async Task RunAsync()
{
Console.WriteLine("Boshlanish");
await Task.Delay(2000); // 2 soniya kutadi, lekin boshqa kodlar ishlashi mumkin
Console.WriteLine("Tugadi");
}
๐น 2. Task va Task
Task โ โboโsh ishโ (natija qaytarmaydi).
Task โ natija qaytaradigan async metod.
public async Task GetNumberAsync()
{
await Task.Delay(1000); // simulyatsiya
return 42;
}
int result = await GetNumberAsync(); // 42
๐น 3. Task.Delay vs Thread.Sleep
Task.Delay โ asinxron kutish. Thread band boโlmaydi.
Thread.Sleep โ synchronous kutish. Thread bloklanadi.
// Bu UI ni qotiradi
Thread.Sleep(3000);
// Bu UI ni qotirmaydi
await Task.Delay(3000);
๐น 4. Task.Run
Fon ishini alohida oqimda bajaradi.
await Task.Run(() =>
{
// Ogโir hisob-kitob
Thread.Sleep(2000);
Console.WriteLine("Hisob tugadi");
});
๐น 5. WhenAll va WhenAny
Task.WhenAll โ bir nechta vazifani parallel bajaradi va hammasi tugashini kutadi.
Task.WhenAny โ birinchi tugagan vazifani kutadi.
var t1 = Task.Delay(2000);
var t2 = Task.Delay(3000);
await Task.WhenAll(t1, t2); // ikkalasini ham kutadi
await Task.WhenAny(t1, t2); // birinchi tugaganini kutadi
๐น 6. ConfigureAwait
Server (ASP.NET Core) yoki UI dasturlarida context switching muhim.
await SomeTask().ConfigureAwait(false);
๐ Bu UI kontekstiga qaytmasdan ishlash uchun kerak (koโp server kodlarda ishlatiladi).
๐น 7. CancellationToken
Asinxron vazifani toโxtatish uchun ishlatiladi.
public async Task RunAsync(CancellationToken token)
{
for (int i = 0; i < 10; i++)
{
token.ThrowIfCancellationRequested();
await Task.Delay(500);
Console.WriteLine(i);
}
}
๐น 8. IAsyncEnumerable (async foreach)
Katta maโlumot oqimini bosqichma-bosqich olish uchun.
public async IAsyncEnumerable GetNumbersAsync()
{
for (int i = 1; i <= 5; i++)
{
await Task.Delay(500);
yield return i;
}
}
await foreach (var num in GetNumbersAsync())
{
Console.WriteLine(num);
}
๐น 9. Common async APIโlar
C# va .NET da tez-tez ishlatiladigan async metodlar:
Task.Delay โ vaqtincha kutish
HttpClient.GetAsync โ internetdan maโlumot olish
Stream.ReadAsync / WriteAsync โ fayl/stream bilan ishlash
SignalR.SendAsync โ real-time xabar joโnatish
DbContext.SaveChangesAsync โ maโlumotlar bazasiga yozish
๐ Xulosa
Thread.Sleep โ bloklaydi, UI qotadi.
Task.Delay โ asinxron kutadi, UI qotmaydi.
Task.Run โ ogโir ishni boshqa oqimga oโtkazadi.
Task.WhenAll / WhenAny โ parallel boshqaruv.
CancellationToken โ ishni toโxtatish.
IAsyncEnumerable โ oqim bilan ketma-ket natija olish.
Top comments (0)