尝试了解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());
}
}
}
在CTP中,我们无法向Task
类型添加新功能,所以我们做了一件务实的事情,只制作了一个新的TaskEx
类型。在最终版本中将不会有这样的类型;这些方法将如您所期望的那样出现在Task
上。
将TaskEx
替换为Task
。在.cs文件的顶部,您需要:
using System.Threading.Tasks;
我看到的大部分示例代码都提到了TaskEx,值得尊敬的Lippert先生似乎表示这是他们开发过程中的一个工件。如果您使用的是Developer Preview,那么Run、WhenAll和Delay等调用已经是类Task
的方法,而不是TaskEx
的方法。发布工具应相同。