2014-11-13 112 views
-1

每當我嘗試此代碼:沒有定義GetFilesAsync

foreach (StorageFile filesAsync in await folderFromPathAsync.GetFolderAsync(_selectedPlayList).GetFilesAsync())//Error here 
     { 
      this._fileNames.Add(filesAsync.Name.Substring(0, filesAsync.Name.LastIndexOf('.'))); 
      this.FilesListBox.Items.Add(filesAsync.Name.Substring(0, filesAsync.Name.LastIndexOf('.'))); 
      this._pathNames.Add(filesAsync.Path); 
     } 

定義GetFilesAsync()犯規存在一些奇怪的reason.Is這是一個我的錯嗎? 我的完整的錯誤消息:

'Windows.Foundation.IAsyncOperation<Windows.Storage.StorageFolder>'不包含「GetFilesAsync」的定義,並沒有擴展方法「GetFilesAsync」接受型「Windows.Foundation.IAsyncOperation」的第一個參數可以找到(是否缺少?使用指令或程序集refrence)

請幫我

回答

1

你試圖調用GetFilesAsync()上調用GetFolderAsync()的結果 - 而你應該等待的GetFolderAsync()結果,然後呼喚關於等待的結果。來自GetFolderAsync()的返回值不是文件夾 - 它是獲取文件夾的異步操作。 (這是一個IAsyncOperation<StorageFolder>,而不是一個StorageFolder

例如:

var folder = await folderFromPathAsync.GetFolderAsync(_selectedPlayList); 
foreach (var file in await folder.GetFilesAsync()) 
{ 
    ... 
} 
+0

非常感謝你。我無法測試它,因爲我的應用程序仍在開發中,結果沒有錯誤。我不得不改變fileAsync.Name和其他文件,但這不是問題。謝謝! – Christos

+0

@myproducts:好的,我改變了變量名,因爲'filesAsync'暗示a)它是一個集合,b)它是一個異步操作,兩者都不是這種情況... –