İlkay İlknur

just a developer...

C# 5.0 Asenkron Programlama Özelliklerini .NET Framework 4.0, Windows Phone 7.5 & 8.0 ve Silverlight 4.0 & 5.0 Platformlarında Kullanın

Blogda bulunan C# 5.0 Asenkron programa ilgili makaleleri okuyanlardan zaman zaman "Acaba bu özellikleri .NET 4.0 veya Windows Phone 7.5 gibi platformlarda kullanabiliyor muyuz ? " gibi mailler alıyorum. Tabi .NET 4.0 kullananlar için projenizi .NET 4.5'e yükseltip kullanın demek verilebilecek en kolay cevap :) Ama tabi projeyi yükseltin demek her zaman söylendiği kadar kolay olamayabiliyor :) Çok kapsamlı çalışmaların, testlerin yapılması gerekebiliyor. Bu nedenle tabi ki insanlar projeyi yükseltmekten ziyade daha kolay yoldan bu özellikleri kullanabilmeyi tercih edebiliyorlar. Windows Phone veya Silverlight tarafına geçtiğimizde ise tabi ki C# 5.0 compilerının yanında compilerın arka planda kullandığı yapılarında bu platformlara taşınmış olması gerekiyor. Neyse çok fazla uzatmayalım ve şöyle Visual Studio 2012 ile .NET Framework 4.0 'da bir Console uygulaması yaratalım ve duruma bir bakalım :)

Şimdi basit bir async metot yazmaya çalışalım ve bakalım nasıl bir durumla karşı karşıya kalacağız.

Çok basit bir şekilde C# 5.0 ile yapabildiğimiz, bir işlemi arka planda çalıştırma olayını .NET Framework 4.0 ile gerçekleştirdik. Şimdi projemizi derleyelim ve bakalım bir sorun ile karşılaşacak mıyız ?

Mesaj aslında oldukça net :) Async ve await keywordlerini C# 5.0 compilerını kullandığımız için kullanabilmekteyiz. Ancak compilerın arka planda kullanacağı tipler haliyle .NET Framework 4.0 içerisinde bulunmuyor ve compiler da haliyle kodu arka planda yeniden yazmak için bu tiplere ihtiyaç duyuyor . Peki compilerın ihtiyacı olan bu tipleri acaba dışarıdan bir library aracılığıyla versek :) kısayoldan sonuca ulaşabilir miyiz ?

Microsoft.Bcl.Async

Microsoft.Bcl.Async nuget paketi Microsoft tarafından geliştirilen ve .NET Framework 4.0, Windows Phone 7.5 / 8.0 ve Silverlight 4.0/5.0 platformları için compilerın arka planda ihtiyaç duyduğu tipleri içerisinde barındıran bir paket. Bunun yanında ilgili platformlarda bulunan bazı tiplere task-based asenkron metotlar da extension metot olarak bu paket sayesinde gelmekte. O zaman bu package'ı projemize ekleyelim ve bakalım nasıl bir değişiklik olacak.

Microsoft.Bcl.Async paketini proye ekledikten sonra projemiz sorunsuz bir şekilde derlendi. Bunun yanında eğer WebClient tipi gibi içerisinde asenkron metotlar bulunan tiplere bakarsak bu tipler içerisinde de task-based asenkron metotların extension metotlar olarak eklendiğini görüyor olacağız.

Gördüğünüz gibi artık C'# 5.0 özelliklerini .NET 4.0, Silverlight ve Windows Phone'da kullanmak oldukça kolay :)  Yapmanız gereken tek şey proje solutionınızı Visual Studio 2012'ye yükseltemek. Evet yanlış okumadınız :) Şu ana kadar yaptıklarımız sadece Visual Studio 2012 içerisinde geçerli. En azından sizi framework upgrade'inden kurtardım ;) Umarım sizler için faydalı bir yazı olmuştur.


Yorum Gönder