我有一个Windows 8程序,它打开一个文件夹并列出其中的所有.txt文件。我遇到的问题发生在该文件夹中有大量文件(数千个)时。发生这种情况时,会导致我的程序挂起甚至崩溃。
我的代码如下所示:
var folderPicker = new Windows.Storage.Pickers.FolderPicker();
folderPicker.FileTypeFilter.Add(".txt");
StorageFolder folder = await folderPicker.PickSingleFolderAsync();
var folderToken = Windows.Storage.AccessCache.StorageApplicationPermissions.FutureAccessList.Add(folder);
var fileList = await folder.GetFilesAsync(Windows.Storage.Search.CommonFileQuery.OrderByName);
// Do something with the files
我可以做些什么来提高性能(不使用默认文件选择器)?或者我应该进行某种形式的检查以防止用户打开包含如此大量文件的文件夹?
答案 0 :(得分:1)
如果您遇到大量文件问题,我建议批量申请文件,而不是一次性申请。
使用GetItemCountAsync获取文件总数。
然后多次调用GetFilesAsync。
GetItemCountAsync();
GetFilesAsync(uint startIndex, uint maxNumberOfItems);