2016-03-22 16 views
0

Listeyi döndürmesi gereken statik bir yöntem var. ama yöntemin içinde beklemek istiyorum. Geri dönen bir yöntemde nasıl beklenir?

public static List<ContactModel> CreateSampleData() 
    { 
     var data = new List<ContactModel>(); 
     StorageFolder musiclibrary = KnownFolders.MusicLibrary; 
     artists = (await musiclibrary.GetFoldersAsync(CommonFolderQuery.GroupByAlbumArtist)).ToList(); 


     for (var i = 0; i < artists.Count; i++) 
     { 
      try 
      { 

       data.Add(new ContactModel(artists[i].Name)); 

      } 
      catch { } 
     } 

     return data; 

    } 

ben

public static async Task<List<ContactModel>> CreateSampleData(){//method contents} 

ben bu kodun Eğer zaman uyumsuz yöntemini bekliyor zorunda

Error: Task<List<ContactModel>> doesnt contain a definition for ToAlphaGroups 

       var items = ContactModel.CreateSampleData(); 
       data = items.ToAlphaGroups(x => x.Name); 

cevap

2

için başka bir sayfada hata alıyorum yaparken:

var items = await ContactModel.CreateSampleData(); 

Sizin yöntem şimdi bir Görev döndürür, bu yüzden neden hata mesajı.

+0

{ { (veri == null) { var öğeler = ContactModel.CreateSampleData bekliyor if() olsun; data = items.ToAlphaGroups (x => x.Name); } dönüş verileri; } } – mhmt93t

+0

bir yöntem içinde bekleyebilir ve aynı zamanda liste döndüren bir yolu yoktur? – mhmt93t

+0

Arama yöntemi eşzamanlı olarak çalışıyorsa, uyumsuz/beklemede kullanım nedir? GetFoldersAsync'in eşzamanlı bir sürümü yoksa, GetFoldersAsync'i eşzamanlı olarak çalıştırmanız gerekir. –

0

Jan-Patric Ahnen cevabını kabul ettiğim için bundan bahsetmem gerekip gerekmediğini bilmiyorum.

Ancak, kodunuza await kodunu ekleyemeyeceğinizden beri: Task, Görev'in "sonucunu" döndüren Result özelliğine sahiptir. Eğer Result kullanmadan önce

var items = ContactModel.CreateSampleData().Result; 
data = items.ToAlphaGroups(x => x.Name); 

birkaç nokta:

  • Result blok çağıran evreyi, iplik UI çağrıldığında bir uygulama tepkisiz hale gelebilir Sen her ne pahasına olursa Result önlemek için çalışmalısınız
  • ve Result beklenmedik sonuçlar üretebildiğinden await kullanmayı deneyin. Kod i umumi ılist Verileri için zaman uyumsuz ekleyemezsiniz bir Methode içindeyse
+0

i sonuç ekledim ama uygulamada hata ayıklamada hata oluştu ve normal başlatma – mhmt93t

+0

çöküyor, bir yerde gerçekleşmesi bekleniyor – Barnstokkr

İlgili konular