修饰符异步对此项无效

本文关键字:无效 异步 | 更新日期: 2023-09-27 18:36:50

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

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

<小时 />

错误 1 修饰符"异步"对此无效 项 C:''用户''Jase''文档''视觉工作室 2012''项目''AppNameHere''AppNameHere''DataModel''AppNameHere数据源.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"。有人可以帮忙吗?

谢谢!

修饰符异步对此项无效

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

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(...);
}

我认为您需要在public之后放置async

public async NotesDataSource() 
{
    //your code here
}