SORU
7 Kasım 2011, PAZARTESİ


'void dönen arasındaki fark ne ve bir Görev dönüyor?

Çeşitli C bakıyor# Uyumsuz* *0, ve genel olmayan Task geri dönüş Diğerleri biraz uyumsuz fonksiyonlar görüyorum örnekler CTP. Neden dönen bir Task<MyType> kullanışlı veri döndürmek için arayan zaman uyumsuz işlemi tamamlar, ama çalıştığını gördüm bu bir tür dönüş Task asla geri herhangi bir veri. Neden void dönüş değil mi?

CEVAP
7 Kasım 2011, PAZARTESİ


SLaks ve Killercam cevaplarını iyi. belki biraz daha fazla içerik eklemek istedim.

İlk soru async işaretlenebilir ne olacak aslında.

Bir yöntem async işaretli void, Task Task<T> dönebilirsiniz. Aralarındaki farklar nelerdir?

* *10 dönen zaman uyumsuz bir yöntem beklediğin ve görev tamamlandığında bir T. teklif

Task dönen zaman uyumsuz bir yöntem beklediğin ve görev tamamlandığında, görev devamı çalıştırmak için planlanıyor.

Olamaz bekliyordu; void dönen zaman uyumsuz bir yöntem bir "ateş ve unut" yöntemi. Zaman uyumsuz olarak çalışır, ve yapıldığı zaman söylemenin bir yolu var. Bu biraz garip; SLaks dediği gibi, normalde sadece işleyici zaman uyumsuz bir etkinlik yaparken ben bunu yapardım. Olayı harekete, işleyici yürütür; kimse gidip "bekliyor" görev tarafından döndürülen olay işleyicisi çünkü olay işleyicileri döndürmeyin görevleri ve bile yaptılar, ne kodu kullanırsınız Görev için bir şey? İlk etapta işleyicisi kontrol aktaran genellikle kullanıcı kodu değil.

İkinci soru, yorum, awaited ne olabileceğine dair aslında

Ne tür yöntemler awaited olabilir mi? Void döndüren bir yöntem awaited olabilir mi?

Hayır, void döndüren bir yöntem beklenen olamaz. Derleyici GetAwaiter örnek bir yöntem ya da bir uzantısı yöntemi nerede olabileceğini M().GetAwaiter(), çağrı await M() çevirir. Değer beklenen bir awaiter alabilirsiniz olmak zorundadır; açıkça void döndüren bir yöntem olan bir awaiter bir değer üretmez.

Task-dönen yöntemleri awaitable değerleri üretebilir. Üçüncü şahıslar Task-beklenen nesnelerin kendi uygulamaları oluşturmak için bekliyoruz ve onları bekliyor olacaktır. Ancak, bir şey dönmek ama void, Task Task<T> async yöntemleri bildirmek için izin verilmez.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • AmeriiK_HD

    AmeriiK_HD

    16 AĞUSTOS 2012
  • chickenby

    chickenby

    2 HAZİRAN 2008
  • KittiesMama

    KittiesMama

    10 AĞUSTOS 2008