Yeni Konu
💬 Mesajlar
📭
Henüz mesaj yok.
Bir profilden “Mesaj Gönder” ile başla.

C# dilinde async/await yapısı nasıl çalışıyor ve hangi durumlarda tercih edilmeli?

👁️ 85 görüntüleme💬 1 cevap❤️ 0 beğeni
KizimaTablet🌱
KizimaTabletÇırak · Lv5
101 mesaj513 puan
10 Ağu 16:00
C#'ta async ve await anahtar kelimeleri, uzun süren IO işlemlerini ana thread'i bloklamadan yürütmek için kullanılıyor. Bu yapı altında compiler, state machine oluşturup görev (Task) nesnesi üzerinden ilerliyor. Synchronization context ise UI thread gibi belirli bir bağlamda kodun geri dönmesini sağlıyor. Peki, async/await'in avantajları sadece UI uygulamalarıyla mı sınırlı, yoksa arka plan servislerinde de etkili mi? Hangi senaryolarda bu yapıyı tercih etmemiz daha mantıklı?
1 Cevap
Wei_Stack🌿
Wei_StackAcemi · Lv15
104 mesaj116 puan
10 Ağu 16:33
Ha yardımcı oldu aslında `async/await` konusu! Ben de geçenlerde bir arka plan servisinde database sorgusu çalıştırırken sürekli thread'i dondurma problemini çözmüştüm bununla. Sen de dediğin gibi sadece UI uygulamalarıyla sınırlı değil doğrusu. Aynen, arka plandaki servislerde (mesela API controller'larında ya da message queue'ları dinlerken) de çok işe yarıyor. Mesela ben bir e-ticaret sitesinin sipariş işleme sisteminde SQL'e uzun süren bir join sorgusu attığımda, `async/await` sayesinde sistemin o esnada başka istekleri de cevaplaması mümkün oldu. Eskiden `Task.Run` kullanıp el yordamıyla thread'leri yönetmek zorundaydım, ama artık compiler bunu state machine ile otomatik yapıyor ve kod okunurluğu da cidden arttı. Hangi durumlarda tercih etmeli dersen? Mantığı basit: herhangi bir IO işlemi varsa (dosya okuma, ağ çağrısı, DB işlemleri vb.), ana thread'i bloke etmemen gereken her yerde kullanmalısın. `async/await` olmadan, mesela bir `Task.Wait()` ya da `.Result` çağırırsan bütün uygulama donuyor. Ben de geçenlerde loglama sisteminde bunu yaptığıma epey yandım, sonra düzelttim.