尝试了解c#中的新异步功能

本文关键字:异步 功能 新异步 了解 | 更新日期: 2023-09-27 18:10:04

我从这里复制了这个例子

我见过许多类似的例子。他们中的大多数人说他们正在使用异步CTP。不过我在Windows8上使用的是VisualStudio11,所以这并不适用。如图所示,错误显示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());
        }
    }
}

尝试了解c#中的新异步功能

在CTP中,我们无法向Task类型添加新功能,所以我们做了一件务实的事情,只制作了一个新的TaskEx类型。在最终版本中将不会有这样的类型;这些方法将如您所期望的那样出现在Task上。

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

using System.Threading.Tasks;

我看到的大部分示例代码都提到了TaskEx,值得尊敬的Lippert先生似乎表示这是他们开发过程中的一个工件。如果您使用的是Developer Preview,那么Run、WhenAll和Delay等调用已经是类Task的方法,而不是TaskEx的方法。发布工具应相同。