Görev sınıfı
Görev sınıfı, .NET 4.0'dan sonra sağlanan asenkron bir işlem soyutlamasıdır ve System.Threading.Tasks.Task.Task'a tam yol sunulur.
Görev sınıfı, dönüş değeri olmayan asenkron işlemleri temsil etmek için kullanılır ve geri dönüş değerlerine sahip asenkron işlemler için Görev sınıfının Görev alt sınıfı <TResult>kullanılmalıdır. Görev sınıfı tarafından oluşturulan görevler iş parçacığı havuzuna eklenir.
<TResult>Görev/Görev sınıfının ana yapıcıları şunlardır:
Oluşturulduktan sonra, görev Start() yöntemiyle başlatılabilir:
Gerçek geliştirmede, yeni görevler oluşturmak ve başlatmak için Task sınıfının statik yöntemi Run() veya fabrika sınıfı TaskFactory'nin üye yöntemi StartNew() daha sık kullanılır.
Görev sınıfındaki bazı yaygın yöntemler:
asenkron/await anahtar kelimesi
C# 5.0, dil seviyesinde eşzamanlılık için daha iyi destek sağlayan asenkron ve await anahtar kelimelerini tanıttı.
Asenkron yöntemleri işaretlemek için kullanılır: Asenkron anahtar kelime bağlamsal bir anahtar kelimedir ve yalnızca bir yöntem ve Lambda değiştirilirken anahtar kelime olarak ele alınır, diğer alanlarda ise tanımlayıcı olarak kabul edilir. Asenkron anahtar kelime statik yöntemleri işaretleyebilir, ancak giriş noktalarını (Main() yöntemleri) işaretleyemez.
Asenkron etiketlenmiş yöntemin dönüş değeri <TResult>Görev, Görev veya boş olmalıdır. Await, asenkron yöntemin sonucunu beklemek için kullanılır:
Await anahtar kelimesi de bağlamsal bir anahtar kelimedir ve sadece asenkron etiketli yöntemde anahtar kelime olarak kabul edilir. Await anahtar kelimesi, asenkron yöntem ve Task, <TResult>ve Task'dan önce asenkron görev yürütülmesinin sonunu beklemek için kullanılabilir. Basit bir asenkron yöntem yapısı şöyledir:
Metodun asenkron anahtar kelimesiyle işaretlendiği anlamına gelmez, asenkron bir yöntemdir ve asenkron yöntemin içinde doğrudan görünen ifadeler de eşzamanlı olarak çalıştırılır,Asenkron olarak yürütülen içerik, Görev sınıfı kullanılarak çalıştırılmalıdır。 Aslında, herhangi bir await ifadesi içermeyen bir asenkron yöntem senkron olarak çalıştırılır ve derleyici bu noktada bir uyarı verir.
Basit bir örnek, ekranda eşzamanlı olarak içerik çıkarmak için asenkron/await kullanmak:
Çıktı: (Mono 4.4.0 && ArchLinux x64)
Yukarıdaki programdan, asenkron anahtar kelime etiketli asenkron yöntemde, await kullanılmadan önceki kodun senkron olarak çalıştırıldığını ve await çağrıldıktan sonra kalan kodun ayrı bir iş parçacığında asenkron olarak çalıştığını görmek zor değildir.
|