C# ile Async/Await: Asenkron Programlamaya Başlangıç

C#'ta asenkron programlama, uzun süren işlemleri (veritabanı sorguları, API çağrıları, dosya okuma) uygulamanın donmasını engelleyerek gerçekleştirmenin yoludur. Async/await anahtar kelimeleri bu işi basit hale getirmiştir.

Async metod, çalıştığı sırada diğer işlemlerin devam etmesine izin verir. Task döndüren bir metodu async olarak tanımlarsınız ve içinde await kullanarak asenkron işlemleri beklersiz.

1public async Task<string> VerileriIndir(string url)
2{
3using (HttpClient client = new HttpClient())
4{
5string veri = await client.GetStringAsync(url);
6return veri;
7}
8}
9
10// Kullanım
11await VerileriIndir("https://api.example.com/data");

Burada GetStringAsync asenkron olarak çalışır ve sonuç gelene kadar await bekler, ama thread serbest kalır.

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası

Async metodu çağırırken await kullanmamak sık yapılan bir hatadır. Eğer sonucu beklemeniz gerekiyorsa mutlaka await yazın. Ayrıca Main metodunu async yapamadığınız için (eski sürümlerde), Task döndüren bir metodu çağırıp.Result ile beklemeyin, deadlock riski oluşur.

I/O işlemleri (network, disk, veritabanı) için ideal. CPU-yoğun hesaplamalar için değil. Örneğin bir web uygulamasında birden fazla API çağrısını paralel yapmak için Task.WhenAll kullanabilirsiniz.

1var task1 = VerileriIndir("url1");
2var task2 = VerileriIndir("url2");
3await Task.WhenAll(task1, task2);

Async/await modern C# yazmanın temelini oluşturur. Doğru kullanıldığında uygulamanızın performansı ve duyarlılığı önemli ölçüde artar.

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz
  • birkahvebirben

    aynen işte, uzun işler sırasında uygulamanın dondurmasını engellemek için bu lazım.

  • kahvekokusu

    veri çekme işi yapıyorsun mesela o sırada kullanıcı başka şeyler yapabilsin diye lazım yoksa ekran donduktan sonra kimse seni kullanmaz zaten

  • neyseartik

    ama çoğu yerde hala synchronous yazılı kodu görüyorum geçiş yapmak zor oluyor heralde

  • eskiinternet

    geçiş yapmanın zor olmasının bir sebebi de var mı, yoksa sadece alışkanlık mı?

  • gecikmisposta

    geçiş zor çünkü eski kodda heryerde try-catch bloğu var, error handling değişiyor.