2012-12-14 308 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在家里的工作速度要快得多,因此在工作中列出文件的延迟可能是由于在家里有些遗漏的链接视频库/文件夹。 –