AsyncOperationManager kullanımı

Asenkron işlemleri incelemeye devam ediyorum ve şirket içinde büyük verilerin anlık olarak işlenmesi veya yer değiştirmesi gerektiğinden dolayı bu konu ile ilgili olarak bir sürü yazı peş peşe geliyor olacak. Bu seferki yazıda AsyncOperationManager adındaki sınıfın nasıl kullanıldığını sizlerle paylaşıyor olacağım.

Belirli noktalarda özellikle Component geliştirilirken ve performans gerektiren noktalarda AsyncOperationManager sınıfı ve ona bağlı sınıfların kullanılması Microsoft tarafından öneriliyor. Bununla ilgili daha detaylı bir performans testi veya makalesi bulana kadar bu varsayımın doğru olduğunu kabul ediyor olacağım.

Daha önceki yazılarımda Zaman Uyumsuz İşlemleri anlatmıştım. Burada kullandığımız IAsyncResult arayüzünde kullanılan bütün özellikleri ve oradaki örneği AsyncOperationManager ile geliştireceğim ve sonrasında üzerinden birlikte belirli noktaların geçiyor olacağız.

Görebileceğiniz gibi çok basit olarak uygulamamızı dönüştürdük. AsyncOperationManager üzerinden bir obje tanımlaması için Create methodunu çağırıyoruz ve elimize AsyncOperation tipinde bir obje olmuş oluyor. Bunu objeyi artık işlem yapacağımız ve işlem ile ilgili önemli gördüğümüz her noktada kullanacağız. Burada ek olarak dikkatinizi çekeceğini düşündü SendOrPostCallback tipindeki delegateler. Bunlar özel olarak tanımlanmış ve sınıfın içerisinde kullanılmaktalar. Bu delegate ler sayesinde işlemimizin tamamlandığını veya devam eden adımları ile ilgili bilgilere sahip olabiliyoruz.

Bu bilgilendirmeyi uygun yerlerde çağıracağımız Post methodları sayesinde yapıyoruz. Ancak dikkat etmemiz gereken içeride çağrılan methodların içerisinde gelecek olan state değerinin Cast edilmesi gerektiği.

Bu örnek ile de senkron olan bir işlemi asenkron olarak çalıştırmayı başardık. Bu sayede kullanıcılarımız donmuş ekranlar görmeden çalışmalarına devam edebilecekleri ekranlar tasarlamış olabileceğiz.

AsyncOperation sınıfının bir özelliği içerisinde yer alan, SynchronizationContext ile birden fazla işlemi çok daha yönetebilir olmanıza imkan sağlaması. Ancak bunun ile ilgili kısımda başka bir yazının konusu olacak. 🙂

Yorumlayın