2012-12-14 306 views
0

我正在循環播放awaitKnownFolders.VideosLibrary.GetFilesAsync()方法中的視頻,首先我認爲我的代碼出了問題,但在裝有SSD驅動器的計算機上,它需要大約5-20秒獲取文件。該文件夾只包含5個小文件。KnownFolders.VideosLibrary.GetFilesAsync()需要很長時間

更奇怪的是,如果我用await KnownFolders.VideosLibrary.GetFolderAsync("subfolder")指定子文件夾,然後從該文件夾執行await folder.GetFilesAsync() - 它會在一秒鐘內循環文件!

我在PicturesLibrary中有同樣的症狀。只有我嗎?也許是因爲操作系統試圖從網絡加載「鏈接」視頻庫(這是我最好的猜測)?

回答

2

我認爲這只是你。這應該工作:

StorageFolder videosFolder = KnownFolders.VideosLibrary; 

IReadOnlyList<StorageFile> fileList = await videosFolder.GetFilesAsync(); 
IReadOnlyList<StorageFolder> folderList = await videosFolder.GetFoldersAsync(); 

var count = fileList.Count + folderList.Count; 
StringBuilder outputText = new StringBuilder(videosFolder.Name + " (" + count + ")\n\n"); 

foreach (StorageFolder folder in folderList) 
{ 
    outputText.AppendLine(" " + folder.DisplayName + "\\"); 
} 

foreach (StorageFile file in fileList) 
{ 
    outputText.AppendLine(" " + file.Name); 
} 

OutputTextBlock.Text = outputText.ToString(); 

要測試你自己,運行Folder Enumeration Sample。這就是上述片段的來源。

+0

好吧,我想這只是我的電腦,因爲你給的代碼示例需要20多秒才能完成,並且它掛在GetFilesAsync()部分。今晚我會在RT設備上試試這些代碼,但我猜測它與「缺少」鏈接的庫文件夾有關,這些文件夾在我現在所處的位置不可用。 –

+0

Yepp在家裏的工作速度要快得多,因此在工作中列出文件的延遲可能是由於在家裏有些遺漏的鏈接視頻庫/文件夾。 –