业务需求说明:
现在我需要做早餐,实现烤面包,烤培根,搞点番茄酱,开吃这几个步骤,烤面包和考培根为了节省时间可以同时操作,然后等这两个做完在搞点番茄酱就可以开饭了。
异步,多任务怎么实现呢
下面通过使用 async/await、WhenAll、ContinueWith 来讲解
复制代码
class Program
{
static async Task Main(string[] args)
{
Console.WriteLine("开始做早餐--------");
//烤面包
Task toast = Toast();
//烤培根
Task bakedBacon = BakedBacon();
//等待这两个任务完成之后搞点番茄酱就可以开吃了。
await Task.WhenAll(toast, bakedBacon).ContinueWith(async (t) =>
{
await AddSauce();
Console.WriteLine("开吃");
});
}
}
复制代码
烤面包异步方法
复制代码
/// <summary>
/// 开始烤面包
/// </summary>
/// <returns></returns>
public static async Task Toast()
{
await Task.Run(async () =>
{
Console.WriteLine("正在烤面包!");
await Task.Delay(4000);
Console.WriteLine("结束烤面包!");
});
}
复制代码
烤培根异步方法
复制代码
/// <summary>
/// 烤培根
/// </summary>
/// <returns></returns>
public static async Task BakedBacon()
{
await Task.Run(async () =>
{
Console.WriteLine("正在烤培根!");
await Task.Delay(2000);
Console.WriteLine("结束烤培根!");
});
}
复制代码
搞点番茄酱异步方法
复制代码
/// <summary>
/// 番茄酱
/// </summary>
/// <returns></returns>
public static async Task AddSauce()
{
await Task.Run(async () =>
{
Console.WriteLine("来点番茄酱!");
await Task.Delay(1000);
Console.WriteLine("番茄酱搞定!");
});
}
复制代码
运行结果:
Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有