1

我正在尝试编写一个返回文件列表的函数。所以这里有一个源代码:

public async IReadOnlyList<StorageFile> GetFiles()
    {
        StorageFolder folder = await KnownFolders.PicturesLibrary.GetFolderAsync("folder N1");
        if (folder != null)
        {
            IReadOnlyList<StorageFile> fList = await folder.GetFilesAsync();
            return fList;
        }
    }

但为什么它不起作用?错误消息是“无法将 IReadOnlyList 转换为 StorageFile”。怎么了?我的 fList 变量的类型与函数头中的类型相同。

4

3 回答 3

3

异步方法返回Task<T>,所以像这样改变你的函数。

public async Task<IReadOnlyList<StorageFile>> GetFiles()
{
    StorageFolder folder = await KnownFolders.PicturesLibrary.GetFolderAsync("folder N1");
    if (folder != null)
         return await folder.GetFilesAsync();
    else
         return null;
}

GetFilesAsync 停止工作

于 2013-04-17T17:24:14.110 回答
2

正如@Xyroid 所说,您需要使用Task> 作为返回类型,因为异步方法的返回类型必须是void、Task 或Task。随着代码@Xyroid 发布。你可以得到这样的文件:

IReadOnlyList<StorageFile> fileList = await GetFiles();
int count = fileList.Count;
于 2013-04-18T02:37:18.173 回答
0

您的列表“fList”使用 StorageFile 作为其类型 - 它应该使用 IReadOnlyList 类型。尝试以下操作:

List<IReadOnlyList> fList = await folder.GetFilesAsync();

更改方法的返回类型:

public async List<IReadOnlyList> GetFiles()
{
    ...
}
于 2013-04-17T15:48:03.423 回答