私は Windows ストア アプリの開発に不慣れで、指定されたディレクトリとそのサブディレクトリ内のすべてのファイルのサイズを取得しようとする C# で記述されたアプリを持っています。StorageFolder.GetFilesAsync() メソッドは、少数のファイルを含むディレクトリでは正常に機能しますが、多数のファイルを含むディレクトリでは、多くの RT タブレットなど、RAM が 2GB しかないデバイスで OOM 例外が発生します。以下のコードが示すように、すべてのファイルのリストを作成するのではなく (非常に非効率的なようです)、アプリがファイルを小さなチャンクで処理できるようにする方法はありますか?
StorageFolderQueryResult queryResult = KnownFolders.RemovableDevices.CreateFolderQueryWithOptions(new QueryOptions(CommonFolderQuery.DefaultQuery));
folderList = await queryResult.GetFoldersAsync();
foreach (StorageFolder folder in folderList)
{
IReadOnlyList<StorageFile> fileList = await folder.GetFilesAsync(CommonFileQuery.DefaultQuery);
foreach (StorageFile file in fileList)
{
BasicProperties properties = await file.GetBasicPropertiesAsync();
size += properties.Size;
}
}