Await运算符只能在Async方法中使用

Wil*_*mas 69 .net c# build async-await .net-4.5

我正在尝试制作一个简单的程序来测试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!";
}
Run Code Online (Sandbox Code Playgroud)

我在MSDN上查看了一些示例,它看起来像我的代码应该正常工作,但我在包含"await QueryRover();"的行上遇到了构建错误.我疯了还是发生了什么?

Ste*_*ary 75

您只能awaitasync方法中使用,而Main不能使用async.

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

如果你想要一个好的介绍,请参阅我的async/ await介绍帖子.

  • C#7现在也支持异步Main Method。 (5认同)