18

beklenmedik bir anda denir, ama GetResults yöntemini çağırın her zaman,bir yöntem ben GetFilesAsync kullanarak bir dizindeki tüm dosyaları yineleme çalışıyorum

System.InvalidOperationException diyor bir istisna atar edildi: bir yöntem beklenmedik anda denirdi

kod ben çok 8 dev kazanın yeniyim basitçe

var files = myStorageFolder.GetFilesAsync(); //runs fine 
var results = files.GetResults(); //throws the exception 

olduğunu açık bir şey eksik olabilir.

Düzenleme (çözüldü) benim konsol uygulaması koşuyorum, ama şimdi programın asenk çalıştığını, files.GetResult() yöntem artık yok.

cevap

10

Tamamlamak için async yöntemini beklemeniz gerekir. Sen zaman uyumsuz yöntemlerle here uğraşan belgelerine kontrol etmek isteyebilirsiniz

var files = await myStorageFolder.GetFilesAsync(); 

: Yani tek seçenek olarak yeni bekliyor kullanabilirsiniz.

1

operasyon hala çalışıyor olabilir gibi sonraki talimat var results = files.GetResults(); //throws the exception

var files = await myStorageFolder.GetFilesAsync(); //runs fine 
var results = files.GetResults(); //this will run when call above returns 
29

gidince sen benim durumumda (async anahtar kelime kullanmak istemiyorsanız eğer var files = myStorageFolder.GetFilesAsync();await gerektiğini, kod içinde oldu

var folder = Package.Current.InstalledLocation.GetFolderAsync("folderName").GetAwaiter().GetResult(); 

Buatmak olmaz: bir özellik, bu nedenle async bu iki yöntem zincirleme olarak, yerine TaskAwaiter kullanabilirsiniz) bir seçenek değildiveya bir kilitlenme neden olur.

+0

'GetAwaiter' yöntemini kullanmak için herhangi bir' Using' ifadesine ihtiyacım var mı? – user1

+1

@ user1 Hatırlayamıyorum, bu 2 yıl önce. Ancak, belgelere bakmak, ihtiyacınız olan uzantı yöntemidir: ['WindowsRuntimeSystemExtensions.GetAwaiter'] (https://msdn.microsoft.com/en-us/library/hh582011 (v = vs.110) .aspx). 'System' ad alanında tanımlanmış, bu yüzden muhtemelen zaten var olan – dcastro

+3

içinde var' GetAwaiter() 'bir 'Görev' olduğunu fark ettim ve bir 'IAwaitableOperation' üzerinde kullanmak istedim bu yüzden 'aramak zorunda kaldı AsTask sonra 'Results', lanet' UWP'. Yine de teşekkürler! – user1

İlgili konular