这似乎与数百个具有相同错误的其他问题重复。我已经看过所有这些并发现它们是无关的。
我正在制作一个小笔记应用程序并尝试从目录中读取文件。在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”。有人可以帮忙吗?
谢谢!
答案 0 :(得分:12)
您的方法签名不正确。看看它:
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(...);
}
答案 1 :(得分:1)
我认为您需要在 async
之后放置public
:
public async NotesDataSource()
{
//your code here
}