等待操作者只能一个异步方法中使用[复制](Await operator can only be us

2019-06-17 15:49发布

这个问题已经在这里有一个答案:

  • 不能指定一个控制台应用程序的“主”方法“异步”修改 15个回答

我试图做一个简单的程序来测试的Visual Studio 2012中新的.NET异步功能我一般使用BackgroundWorkers运行耗时异步代码,但有时它似乎是一个相对简单的(但昂贵的)操作的麻烦。 新的异步修饰符看起来这将是伟大的使用,但不幸的是我似乎无法得到一个简单的测试去。

这里是我的代码,在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上的一些例子,它看起来对我来说,这个码应该是工作,而是我对包含该行得到一个生成错误“等待QueryRover();” 难道我要疯了,或者有鬼怎么回事?

Answer 1:

你可以只用await中的async方法,并且Main不可能是async

你将不得不使用自己的async兼容的情况下,调用Wait对返回TaskMain方法,或只是忽略返回的Task ,只是在电话会议上阻止Read 。 需要注意的是Wait将包装的任何异常在AggregateException

如果你想有一个很好的介绍,请参阅我的async / await开场后 。



文章来源: Await operator can only be used within an Async method [duplicate]