使用C#(Windows-Store App)获取文件列表。使用函数进行故障排除

时间:2013-04-17 15:28:03

标签: c# windows-8

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

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变量与函数头中的类型相同。

3 个答案:

答案 0 :(得分: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 stops working

答案 1 :(得分:2)

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

IReadOnlyList<StorageFile> fileList = await GetFiles();
int count = fileList.Count;

答案 2 :(得分:0)

您的列表'fList'使用StorageFile作为其类型 - 它应该使用类型IReadOnlyList。请尝试以下方法:

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

更改方法的返回类型:

public async List<IReadOnlyList> GetFiles()
{
    ...
}