使用c#获取文件列表(Windows-Store应用程序).函数的问题

本文关键字:应用程序 函数 问题 Windows-Store 获取 文件 列表 使用 | 更新日期: 2023-09-27 18:09:54

我试图写一个函数,将返回一个文件列表。下面是源代码:

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

但是为什么不工作呢?错误提示"Can't convert IReadOnlyList to StorageFile"。怎么了?我的fList变量与函数头中的类型相同。

使用c#获取文件列表(Windows-Store应用程序).函数的问题

异步方法返回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停止工作

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

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

你的列表'fList'使用StorageFile作为它的类型-它应该使用类型IReadOnlyList。试试以下命令:

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

改变方法的返回类型:

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