İçindekiler:
Tanım - Asenkron Yöntem Çağrısı ne anlama geliyor?
Zaman uyumsuz bir yöntem çağrısı, .NET programlamasında, işleminin tamamlanmasından hemen önce ve çağıran iş parçacığını engellemeden arayana geri dönen bir yöntemdir.
Bir uygulama eşzamansız bir yöntemi çağırdığında, görevini yerine getiren eşzamansız yöntemin yürütülmesi ile eşzamanlı olarak çalışabilir. Zamanuyumsuz bir yöntem, ana uygulama iş parçacığından ayrı bir iş parçacığında çalışır. İşleme sonuçları başka bir iş parçacığındaki başka bir çağrı ile getirilir.
Eşzamansız yöntemler, ölçeklenebilir uygulama ile sonuçlanan kaynakların yürütülmesini optimize etmeye yardımcı olur. Bunlar, büyük dosyaları açmak, uzak bilgisayarlara bağlanmak, veritabanını sorgulamak, Web hizmetlerini ve ASP.NET Web formlarını aramak gibi zaman alan görevleri yürütmek için kullanılır.
Asenkron yöntem çağrısı, asenkron yöntem çağırma (AMI) olarak da adlandırılabilir.
Techopedia Asenkron Yöntem Çağrısını Açıklıyor
Asenkron yöntem, senkron yöntemden çağrıdan geri dönme biçiminden farklıdır. Zaman uyumsuz bir yöntem çağrısı hemen geri döner ve çağrı programının diğer işlemleri gerçekleştirmesine izin verirken, senkron yöntem çağrıları, program akışına devam etmeden önce yöntemin tamamlanmasını bekler.
.NET çerçevesi yerleşik eşzamansız altyapısı vardır, böylece herhangi bir yöntem kodunu değiştirmeden eşzamansız olarak çağrılabilir.
.NET çerçevesi, eşzamansız temsilciler (IASyncResult nesneleri) ve olayları kullanan eşzamansız yöntemi uygulamak için iki tasarım deseni sağlar. Asenkron delegelerin düzeni daha karmaşıktır ve esneklik sağlar, bu da onu çeşitli karmaşık programlama modellerine uygun hale getirir. Olay tabanlı model basittir ve çoğu durumda kullanılmalıdır.
Eşzamansız temsilciler deseninde, bir temsilci nesnesi iki yöntem kullanır: BeginInvoke ve EndInvoke. BeginInvoke, iki ek isteğe bağlı parametre ile birlikte, sarılmış işlevine benzer bir parametre listesine sahiptir; IAsyncResult nesnesini döndürür. EndInvoke, IAsyncResult nesnesiyle birlikte iki parametre (out ve ref tipi) döndürür. BeginInvoke, eşzamansız çağrıyı başlatmak için kullanılırken, EndInvoke eşzamansız çağrının sonuçlarını almak için kullanılır.
Olaylara dayalı eşzamansız kalıplar, geçerli iş parçacığında yürütülen eşzamanlı sürümleri olan MethodNameAsync adlı bir veya daha fazla yöntemi olan bir sınıf kullanır. Olay tabanlı kalıplar bir MethodNameCompleted olayı ve MethodNameAsyncCancel yöntemi de olabilir. Bu kalıp, sınıfın temsilci olay modelini kullanarak bekleyen asenkron işlemlerle iletişim kurmasını sağlar.
Asenkron yöntemlerle ilgili birkaç ipucu aşağıdadır:
- Yüksek eşzamanlılık için eşzamansız yöntemlerden kaçınılmalıdır
- Paylaşılan nesne referanslarını geçerken dikkatli olunmalıdır
- İstisnaları geri almak ve başarısızlığı önlemek için EndXXX (eşzamansız bir işlemin sonunda çağrılır) çağrılmalıdır
- Tüm istisna nesnelerini eşzamansız yöntemle yakalayıp kaydederek, EndXXX çağrısı sırasında yeniden yazılabilir
- Kullanıcı arabiriminde, uzun süre çalışan eşzamansız işlemleri başlatan denetimlerin yalnızca bu amaç için gerekli olmaları durumunda devre dışı bırakılması gerekir
- Eşzamansız yöntemler, çok iş parçacıklılık anlayışı ile ve eşzamanlı yöntemleri kullanmaktan daha verimli oldukları kanıtlanarak uygulanmalıdır.
