背景
今天在疯狂输出代码的时候,利用Parallel.Foreach()来编写并行程序的时候出现问题了,然后Parallel是基于Task的,所以我决定,先研究一下Task。
文章后续主要是模拟一位大厨准备早餐,包括煎蛋和煮咖啡两件事。煎蛋和煮咖啡两件事情是可以异步进行的,比如,可以先开始煮咖啡,在等待过程中(比如烧水耗时长,只需等待不需操作),就可以先开始着煎蛋的,然后两件事情交互着进行。
任务的开启
我们先来定义一下煮咖啡和煎鸡蛋两个方法
static async Task FryEgg()
{
Console.WriteLine("Start frying egg.");
await Task.Delay(3 * 1000);
Console.WriteLine("Finish frying egg.");
}
static async Task MakeCoffee()
{
Console.WriteLine("Start making coffee.");
await Task.Delay(4 * 1000);
Console.WriteLine("Finish making coffee.");
}
这里用Task.Delay()方法来模拟制作过程中需要等待,煎蛋要三秒,煮咖啡要四秒。
接着我们尝试来开启这两个任务。