3

这似乎与数百个具有相同错误的其他问题的重复。我查看了所有这些,发现它们是无关的。

我正在制作一个小笔记应用程序,并试图从目录中读取文件。按照 MSDN 示例,我有以下代码,但它给了我一个错误:


错误 1 ​​修饰符 'async' 对此项无效 C:\Users\Jase\documents\visual studio 2012\Projects\AppNameHere\AppNameHere\DataModel\AppNameHereDataSource.cs 192 9 AppNameHere


我的代码是:

    async public NotesDataSource()
    {
        StorageFolder documentsFolder = KnownFolders.DocumentsLibrary;
        StringBuilder outputText = new StringBuilder();

        IReadOnlyList<StorageFile> fileList =
            await documentsFolder.GetFilesAsync();
        outputText.AppendLine("Files:");

        foreach (StorageFile file in fileList)
        {
            if (file.FileType == "txt")
            {
                outputText.Append(file.Name + "\n");
            }
        }
        // lots of irrelevant code removed.
    }


我不明白这里发生了什么。我跟随一切到一个“T”。有人可以帮忙吗?

谢谢!

4

2 回答 2

13

您的方法签名不正确。看它:

async public NotesDataSource()

首先,async必须访问修饰符 IIRC 之后。

其次,要么你试图创建一个异步构造函数(你不能这样做),要么你试图编写一个没有返回类型的方法(这同样是无效的)。

试试这个:

public async Task NotesDataSource()

那就是如果你的意思是它是一种方法。如果您想有效地创建一个异步构造函数(或接近它的东西),您必须使用异步静态方法:

public static async Task<NotesDataSource> CreateInstance()
{
    // Do async stuff here which fetches all the necessary data...

    return new NotesDataSource(...);
}
于 2012-06-12T13:04:54.087 回答
1

我认为你需要放置async public

public async NotesDataSource() 
{
    //your code here
}
于 2012-06-12T13:03:27.513 回答