Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 修饰符async对此项无效_C#_.net_Io_Windows 8_Microsoft Metro - Fatal编程技术网

C# 修饰符async对此项无效

C# 修饰符async对此项无效,c#,.net,io,windows-8,microsoft-metro,C#,.net,Io,Windows 8,Microsoft Metro,这似乎并不是数百个具有相同错误的其他问题的重复。我把它们都看了一遍,发现它们毫无关联 我正在制作一个小便笺应用程序,并试图从目录中读取文件。按照MSDN示例,我有以下代码,但它给了我一个错误: 错误1修饰符“async”对此无效 项目C:\Users\Jase\documents\visual studio 2012\Projects\AppNameHere\AppNameHere\DataModel\appnameeredatasource.cs 192 9 AppNameHere 我的密

这似乎并不是数百个具有相同错误的其他问题的重复。我把它们都看了一遍,发现它们毫无关联

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


错误1修饰符“async”对此无效 项目C:\Users\Jase\documents\visual studio 2012\Projects\AppNameHere\AppNameHere\DataModel\appnameeredatasource.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.
    }
async public NotesDataSource()
{
StorageFolder documentsFolder=KnownFolders.DocumentsLibrary;
StringBuilder outputText=新建StringBuilder();
IReadOnlyList文件列表=
等待documentsFolder.getFileAsync();
AppendLine(“文件:”);
foreach(文件列表中的存储文件)
{
如果(file.FileType==“txt”)
{
outputText.Append(file.Name+“\n”);
}
}
//删除了大量不相关的代码。
}

我不明白这里发生了什么。我把一切都看得很清楚。有人能帮忙吗


谢谢大家!

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

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

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

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(...);
}
公共静态异步任务CreateInstance()
{
//在这里执行异步操作,获取所有必要的数据。。。
返回新NotesDataSource(…);
}

您要针对的.NET Framework是什么<如果安装了.NET Framework的扩展和/或您试图以.NET Framework 4.5为目标,则code>async仅是一个关键字。请提供指向MSDN示例的链接。它适用于Windows 8版本预览中的Metro应用:-此错误不是因为Windows 8尚未完成(正如我多次被告知的那样)-因为许多其他应用正在读取Metro应用中的文件并向其写入。根据重复问题,可能存在重复,您不能有异步构造函数。我正在尝试在注释和答案中提供一些建议,稍后会回来。谢谢大家:-)我不能在访问修饰符之后使用异步。编译器发出嘶嘶声,告诉我不要这样做。所以我试着把它放在修饰符之前,它开始工作了(无论如何比以前更有效)@Jason:你仍然有一个编译错误,所以它没有真正工作。。。在访问修饰符之后应该有
async
,所以我认为你只是在转移问题。@JonSkeet:出于好奇,(如果你不介意的话)我想知道:你是如何每天发布这么多答案(和评论)的?你平均花多少时间在这上面?@JonSkeet:当然,这是一项背景活动。我只是想知道,为什么人类能够发布这么多答案;最重要的是,你不会厌倦回答琐碎的问题。我必须说你对C#很有热情。顺便说一句,我能假设你每天总共花将近4个小时吗?@JonSkeet:所以你一点都不知道?甚至连一个范围都没有,比如,4-6个小时,或者别的什么。。或者至少,你多久去一次,或者多少次,等等,诸如此类的事情?我就是这么想的。编译器出于某种原因不喜欢这样做。@Jason,这是因为除此之外,您还需要实现Jon Skeet关于构造函数和静态方法的一个或另一个建议。