我试图创建一个简单的程序来测试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上查看了一些示例,它在我看来这个代码应该正常工作,但我在包含&#34;等待QueryRover();&#34;的行上得到了构建错误。我疯了还是发生了什么蠢事?
答案 0 :(得分:72)
您只能在await
方法和Main
cannot be async
中使用async
。
您必须使用自己的async
兼容上下文,在Wait
方法中的返回Task
上调用Main
,或者忽略返回的{{ 1}}并阻止对Task
的调用。请注意,Read
将在Wait
中包含任何例外。
如果您想要一个好的介绍,请参阅我的async
/await
intro post。