Merhabalar,
Bu yazıda sizlere C# da Asenkron metodlar nedir, neden kullanılır ve kendi asenkron
metodlarımızı oluşturmayı göstereceğim.
Asenkron metodlar birden fazla işin eş zamanlı çalışmasını sağlar örnek vericek olursak bir windows form programınızın olduğunu farz edin ve üzerinde 2 tane buton olsun. teki sms yoluyla müşterilere bilgi gönderiyor diğeride mail yoluyla bilgi gönderiyor varsayalım. Mail yoluyla bilgi göndermek için butona bastınız diyelim mailler gönderilene kadar sms ile bilgi gönder butona basamazsınız ve hatta formu hareket bile ettiremezsiniz işte bu noktada Asenkron metodlar yardımımıza koşuyor eğer biz işlemlerimizi asenkron olarak tanımlamış olsaydık bir işi yapmak için diğer bir işin bitmesini beklemeyecektik.
Şimdi ufak bir uygulama yapalım bir tane formumuz olsun ve üzerinde 2 adet buton olsun biri 100.000 den geriye doğru saysın diğeri 1 den 100.000 kadar saysın. Öncelikle işlemlerimizi asenkron metod kullanmadan yapalım.

Evet resimde görmüş olduğunuz gibi 1'den 100.000'e kadar say butonuna bastım işlem başladı bu işlem yürütülürken 100.000'den geriye dogru say butonuna basamadım çünkü program ilk iş bitmeden bu işe geçmeme izin vermedi. Peki bunları asekron bir şekilde yazıcak olsaydık nasıl yazardık hemen ona bir göz atalım.
Oncelikle butonlarımızın imzasının önüne async koyuyoruz bu butonun click eventinin içindeki metodun asekron şekilde çalıştırılacağı anlamına geliyor.
Ve imzası Task olan metodlarımızı oluşturuyoruz İleriSay(), GeriSay() adında...
Bu metodların da imzası Task olduğu için geriye Task değer döndüren işlem yapacağız.
İleriSay, ve GeriSay metodlarımızı butonların içinde çağıralım ancak çağırırken metodun önüne await ifadesini koymak zorundayız bu metodun asenkron şekilde bekleneceği anlamına gelmektedir.
Yalnız formumuzun constructor kısmına "CheckForIllegalCrossThreadCalls = false;" kodunu ekliyoruz yoksa programımız
"Çapraz iş parçacığı işlemi geçerli değil: 'listBox1' denetimine oluşturulduğu iş parçacığı dışında başka bir iş parçacığından erişildi." şeklinde hata verecektir.
Evet artık işlemlerimizi yaptığımza göre sıra geldi çalıştırmaya ekran görüntüsünde olduğu gibi artık işlemlerimizin ikisinde aynı anda çalıştırabiliriz :)

Benden bu kadar kolay gelsin :)