Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# wait运算符只能在异步方法中使用_C#_.net_Build_.net 4.5_Async Await - Fatal编程技术网

C# wait运算符只能在异步方法中使用

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(

我正在尝试制作一个简单的程序来测试Visual Studio 2012中新的.NET异步功能。我通常使用BackgroundWorkers异步运行耗时的代码,但有时对于一个相对简单(但昂贵)的操作来说,这似乎是一个麻烦。新的异步修饰符看起来非常适合使用,但不幸的是,我似乎无法进行简单的测试

以下是我在C#控制台应用程序中的代码:

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方法。