我正在尝试制作一个简单的程序来测试 Visual Studio 2012 中新的 .NET 异步功能。我通常使用 BackgroundWorkers 来异步运行耗时的代码,但有时对于相对简单(但昂贵)操作。新的 async 修饰符看起来很好用,但不幸的是我似乎无法进行简单的测试。
这是我在 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 上查看了一些示例,在我看来,这段代码应该可以工作,但我在包含“await QueryRover();”的行上出现了构建错误我是疯了还是发生了什么可疑的事情?
最佳答案
您只能使用 await
在 async
方法和 Main
cannot be async
.
您必须使用自己的 async
- 兼容的上下文,调用 Wait
返回 Task
在 Main
方法,或者忽略返回的 Task
并阻止对 Read
的调用.请注意 Wait
将所有异常都包含在 AggregateException
中.
如果你想要一个好的介绍,请看我的 async
/ await
intro post .
https://stackoverflow.com/questions/11836325/
相关文章:
java - 何时使用 gradle.properties 与 settings.gradle?
visual-studio-2010 - 除非我手动选择 "Rebuild",否则 Visual S
c# - 使用 Visual Studio 2010 从命令行构建 C# 解决方案
visual-studio - Visual Studio 构建速度非常慢
visual-studio-2010 - Visual Studio 2010 说在我更改源文件后构
linux - 典型的 ./configure 在 Linux 中做了什么?
maven-2 - Maven - 如何将任意类路径条目添加到 jar?