1. ホーム
  2. c#

Await演算子はAsyncメソッド内でのみ使用可能 [重複]。

2023-08-13 12:19:46

質問

私は、Visual Studio 2012 内の新しい .NET 非同期機能をテストするための簡単なプログラムを作ろうとしています。私は通常、時間のかかるコードを非同期で実行するために BackgroundWorkers を使用しますが、時々、比較的単純な (しかし高価な) 操作のために面倒に思えます。新しい async 修飾は、使用するのが素晴らしいように見えますが、残念ながら簡単なテストを行うことができないようです。

以下は私のコードで、C# コンソール アプリケーションです。

static void Main(string[] args)
{
    string MarsResponse = await QueryRover();
    Console.WriteLine("Waiting for response from Mars...");
    Console.WriteLine(MarsResponse);
    Console.Read();
}

public static async Task<string> QueryRover()
{
    await Task.Delay(5000);
    return "Doin' good!";
}

MSDN でいくつかの例をチェックアウトし、このコードが動作するように見えるのですが、代わりに "await QueryRover();" を含む行でビルド エラーが発生します。私がおかしくなっているのか、何か怪しいことが起きているのでしょうか。

どのように解決するのですか?

を使用することができます。 await の中で async メソッドと Main にはできません。 async .

を使用する必要があります。 async -と互換性のあるコンテキストで、呼び出し Wait を返します。 Task の中に Main メソッドを呼び出すか、あるいは単に返された Task を無視して Read . なお Wait はあらゆる例外を AggregateException .

もしあなたが良いイントロが欲しいなら、私の async / await イントロポスト .