Middle
C#'ta async/await mekanizması nasıl çalışır?
sobes.tech yapay zeka
AI'dan gelen yanıt
async/await mekanizması, senkron gibi görünen asenkron kod yazmayı sağlar.
- Anahtar kelime
async: Bir yöntemi asenkron olarak işaretler. Böyle bir yöntemawaitifadesini içerebilir. - Anahtar kelime
await: GenellikleTaskveyaTask<T>döndüren bir asenkron işlemi çağırmadan önce kullanılır.await'a ulaşıldığında, kontrol çağıran metoda geri verilir ve serbest kalan iş parçacığı başka işler yapabilir. Task/Task<T>: Bir asenkron işlemin tamamlanması ve sonucu (Task<T>ise) vaat eder.await, bu "vaadin" tamamlanmasını "bekler".- Durum makinesi: Derleyici, asenkron yöntemi bir durum makinesine dönüştürür. Bu makine,
awaitnoktasında yöntemin durumunu saklar. - Devam: Beklenen görev tamamlandığında, çalışma zamanı kalan kısmın (devamın) yürütülmesini planlar, bu ya bir iş parçacığı havuzundan ya da yakalanmışsa aynı senkronizasyon bağlamında olur.
- Kontrolün geri dönüşü: Asenkron işlem tamamlandıktan sonra, kontrol
awaitsonrası noktaya geri döner ve yöntemin yürütülmesi saklanan durumla devam eder.
// Asenkron yöntem
async Task<int> GetLengthAsync(string url)
{
// HTTP istemcisi oluştur
using var client = new HttpClient();
// URL'ye asenkron istek yap
// Await, isteğin tamamlanmasını engellemeden bekler
string content = await client.GetStringAsync(url);
// Devam, içeriği aldıktan sonra yürütülür
return content.Length;
}
// Asenkron yöntemi kullanma
async void Button_Click(object sender, EventArgs e)
{
// Await, GetLengthAsync'in bitmesini bekler
// UI iş parçacığı engellenmez
int length = await GetLengthAsync("https://example.com");
// UI öğesini güncelle
Label1.Text = $"İçeriğin uzunluğu: {length}";
}