我试着用新的async
和await
关键字使用VS2012RC和.NET 4.5只是一个简单的委托,返回一个字符串,它运行良好,当我运行一个:当.NET 4.5中任务异步的任何方法从未完成
string message = await Task.Run(() => { return "something"; });
但是当我尝试WhenAny
:
string message = await Task.WhenAny(new Task<string>(() => { return "something"; })).Result;
它只是从来没有完成......为什么呢?
我一直在看由史蒂夫·桑德森从TechDays 2012和荷兰这使得这个看起来很简单的视频:http://channel9.msdn.com/Events/TechDays/Techdays-2012-the-Netherlands/2287
对。 ''Task'上有很多东西,写'async' /'await'代码时通常不应该使用它。我在['async' /'await' intro post](http://nitoprograms.blogspot.com/2012/02/async-and-await.html)的底部列出了一个列表:'Task'构造函数,'' Wait“,”Result“,”WaitAny“和”WaitAll“。此外,'Thread.Sleep'。 – 2012-07-15 16:05:12
为了好奇,'Task'作为.NET 4.0中任务并行库的支柱而出现。这就是为什么它有许多基于同步CPU的视角设计的API。 – 2012-07-15 16:09:01