Windows 저장소 앱 개발을 처음 사용하고 특정 디렉터리 및 해당 하위 디렉터리의 모든 파일 크기를 가져 오는 C#으로 작성된 응용 프로그램이 있습니다. StorageFolder.GetFilesAsync() 메서드는 파일 수가 적은 디렉토리에서 제대로 작동하지만 많은 수의 파일이 포함 된 디렉토리에서는 많은 RT 태블릿과 같이 RAM이 2GB 인 장치에서만 OOM 예외가 발생합니다. 이 코드가 아래에 설명 된 것처럼 모든 파일 (매우 비효율적 인 것 같습니다)의 목록을 작성하는 대신 작은 덩어리로 파일을 처리하도록 앱을 허용하는 방법이 있습니까?Windows 저장소 앱 StorageFolder.GetFilesAsync()가 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;
}
}
IMO, Windows에서 문제가 발생했습니다. 나는 왜 파일 열거가 너무 배고픈 기억이어야하는지 상상할 수 없다. 폴더에 이미지를 열거 할 때도 같은 문제가 발생했습니다. 2000 개 이미지로 RuntimeBroker는 4.5Gb의 메모리를 소비합니다! – Tristan