修饰符异步对此项无效

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

我正在制作一个小笔记应用程序,我正在尝试从目录中读取文件。 在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 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 CreateInstance() { // Do async stuff here which fetches all the necessary data... return new NotesDataSource(...); } 

我认为你需要 public 放置async

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