异步编程示例 async/await

博客仅提及运行结果,但未给出具体内容,无法获取更多关键信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        static void Main(string[] args)
        {
            PrepareAsync().Wait();

            Console.WriteLine("准备工作完成,可以泡茶了~~~");
            Console.ReadLine();
            return;
        }

        private static async Task PrepareAsync()
        {
            Task<string> heatupWaterTask = HeatupWater();//异步执行此代码
            Task<string> washCupTask = WashCup(3);//异步执行此代码
            await washCupTask; //使用 await, 阻塞当前线程,等待 washCupTask 任务完成后才会继续执行后面代码
            Task<string> fillTeaTask = FillTea(3);//异步执行此代码

            if (!heatupWaterTask.IsCompleted)
                Console.WriteLine("水还没烧开,玩会手机~~~");

            Task.WaitAll(heatupWaterTask, washCupTask, fillTeaTask);//阻塞当前线程,等待所有异步TASK都完成后返回
        }

        private static async Task<string> WashCup(int n)
        {
            try
            {
                Console.WriteLine($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")} 开始洗杯子 x {n}");
                await Task.Delay(1000 * n);
                return $"wash {n} cup";
            }
            finally
            {
                Console.WriteLine($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")} 结束洗杯子");
            }
        }

        private static async Task<string> FillTea(int n)
        {
            try
            {
                Console.WriteLine($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")} 开始往杯子里放茶叶 x {n}");
                await Task.Delay(1000 * n);
                return $"fill tea";
            }
            finally
            {
                Console.WriteLine($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")} 结束放茶叶");
            }
        }

        private static async Task<string> HeatupWater()
        {
            try
            {
                Console.WriteLine($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")} 开始烧水");
                await Task.Delay(1000 * 10);
                return $"HeatupWater";
            }
            finally
            {
                Console.WriteLine($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")} 结束烧水");
            }
        }

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值