在UWP应用程序中,我尝试使用storegefolder.getfilesasync()nethod。
public async void GetMediaFiles()
{
_localMediaFolder = await GetOrCreateFolder(ApplicationData.Current.LocalFolder, "Media", ReservationId.ToString());
IReadOnlyList<StorageFile> files = await _localMediaFolder.GetFilesAsync();
}
iv'e也尝试使用已知文件夹以及相同的结果。
public async void GetMediaFiles()
{
StorageFolder picturesFolder = KnownFolders.PicturesLibrary;
_tempMediaFolder = await picturesFolder.CreateFolderAsync("media", CreationCollisionOption.OpenIfExists);
IReadOnlyList<StorageFile> storageFilesOperation = await _tempMediaFolder.GetFilesAsync();
}
而不是'ireadyllylist'im获取" system .__ comObject"。我不能将其施放给" Ireadonlylist",也不知道如何使用它来获取我需要的文件。
iv'e也尝试使用已知文件夹以及相同结果。没有例外的int输出表明该应用程序无法访问文件或文件夹。iv'e还检查了用于图片库的访问的应用清单。
我该如何修复?
这是设计。由于IReadOnlyList
是一个接口,因此无需将System.__ComObject
施放为IReadOnlyList
,这意味着当您创建此类型的变量时,您可以将其分配给它的任何一个实现IReadOnlyList
接口的类的实例,而System.__ComObject
就是这样的类。您可以像往常一样继续使用storageFilesOperation
,例如删除所有文件:
StorageFolder picturesFolder = KnownFolders.PicturesLibrary;
var _tempMediaFolder = await picturesFolder.CreateFolderAsync("media", CreationCollisionOption.OpenIfExists);
IReadOnlyList<StorageFile> storageFilesOperation = await _tempMediaFolder.GetFilesAsync();
foreach(StorageFile f in storageFilesOperation)
{
await f.DeleteAsync();
}