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()

まず、アクセス修飾子 IIRC のasyncに来る必要があります。

次に、非同期コンストラクターを作成しようとしているか (これはできません)、戻り値の型を持たないメソッドを作成しようとしています (これは同様に無効です)。

これを試して:

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 に答える