C# wait运算符只能在异步方法中使用
我正在尝试制作一个简单的程序来测试Visual Studio 2012中新的.NET异步功能。我通常使用BackgroundWorkers异步运行耗时的代码,但有时对于一个相对简单(但昂贵)的操作来说,这似乎是一个麻烦。新的异步修饰符看起来非常适合使用,但不幸的是,我似乎无法进行简单的测试 以下是我在C#控制台应用程序中的代码:C# wait运算符只能在异步方法中使用,c#,.net,build,.net-4.5,async-await,C#,.net,Build,.net 4.5,Async Await,我正在尝试制作一个简单的程序来测试Visual Studio 2012中新的.NET异步功能。我通常使用BackgroundWorkers异步运行耗时的代码,但有时对于一个相对简单(但昂贵)的操作来说,这似乎是一个麻烦。新的异步修饰符看起来非常适合使用,但不幸的是,我似乎无法进行简单的测试 以下是我在C#控制台应用程序中的代码: static void Main(字符串[]args) { 字符串MarsResponse=await QueryRover(); Console.WriteLine(
static void Main(字符串[]args)
{
字符串MarsResponse=await QueryRover();
Console.WriteLine(“等待来自Mars的响应…”);
控制台写入线(MarsResponse);
Console.Read();
}
公共静态异步任务QueryRover()
{
等待任务。延迟(5000);
返回“做得好!”;
}
我在MSDN上查看了一些示例,在我看来,这段代码应该可以正常工作,但相反,我在包含“await QueryRover();”的行中遇到了一个构建错误,“我疯了吗?还是有什么可疑的事情发生了?您只能在
异步方法中使用await
,并且
您必须使用自己的async
兼容上下文,在Main
方法中对返回的Task
调用Wait
,或者忽略返回的Task
并阻止调用Read
。请注意,Wait
将把所有异常包装在一个aggregateeexception
中
如果您想要一个好的介绍,请参阅我的。C#7现在也支持异步Main方法。