2011-09-27 47 views
7

新的异步功能,我从here试图了解在C#

我见过很多类似的例子复制这个例子。他们中的大多数人表示他们正在使用Async CTP。我在Windows 8上使用Visual Studio 11,但不适用。如图所示,错误说TaskEx不存在。我想我错过了一个参考,但不知道哪一个。

此页面为http://users.zoominternet.net/~charleswatson/pic.png

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static Random rnd = new Random(); 

     static void Main(string[] args) 
     { 
      //Do some other heavy duty background task in this thread 
      StartHotel(); 
      Console.WriteLine("StartHotel called.."); 
      Console.ReadLine(); 

     } 

     static void StartHotel() 
     { 
      Console.WriteLine("Starting Hotel.."); 

      for (int i = 0; i < 10; i++) 
      { 
       string name = "Chef" + i; 
       CookDish(name, "Dish" + i); 
       Console.WriteLine("Asked {0} to start cooking at {1}", name, DateTime.Now.ToString()); 
      } 
     } 

     static async void CookDish(string chefName, string dish) 
     { 
      //Induce a random delay 
      int delay = rnd.Next(1000, 4000); 
      //Cook is cooking - Task 
      await TaskEx.Delay(delay); 
      //Write the result - StuffAfterAwait 
      Console.WriteLine("Chef {0} Finished at {1}", chefName, DateTime.Now.ToString()); 
     } 
    } 
} 
+1

只需右键单击 - >打开。图片通过css缩小。 – Femaref

+0

@Femaref:啊,完美。谢谢 –

+0

只需点击示例链接 –

回答

12

在CTP我们无法使我们做的事情务实和刚拍完一部新TaskEx类型的新功能添加到Task类型。在最终版本中不会有这种类型;这些方法只会在你想象的Task上。

+3

此外,在当前VS2011开发预览中,方法*在*任务类型(如果您的目标是Metro或.NET 4.5)*上。 –

2

TaskEx替换为Task。在cs文件的顶部,你将需要:

using System.Threading.Tasks; 

大部分示例代码我见过指TaskEx,而难能可贵的利珀特先生似乎表明这是其发展的一个神器处理。如果您使用的是开发人员预览版,则类似Run,WhenAll和Delay的调用已经是类Task而非TaskEx的方法。发布工具应该是一样的。