C# 使用Task实现任务超时,多任务一起执行

2021-04-22 17:36

阅读:408

标签:seconds   bool   tar   ota   console   any   没有   from   退出   

简介:充分使用Task的异步功能
代码实现:
1.实现了任务超时 退出任务

2.多个任务一起执行


        ///


        ///做事 需要 ms秒 才能完成
        ///

        ///
        ///
        static async Task Doing(int time, string name = "我")
        {
            Console.WriteLine(name+"来了");
            await Task.Delay(TimeSpan.FromMilliseconds(time));
            return string.Format("这活{1}干了:{0}ms ", time,name);
        }
        ///
        /// 设定超时任务  如果超时返回
        ///

        ///
        ///
        static async Task TimeOut(bool needTimeOut)
        {
            Console.WriteLine(needTimeOut);
            var t=new Stopwatch();
            t.Start();
            var timeOutTask = Task.Delay(150);//1.设定一个超时的任务
            var doing = Doing(needTimeOut ? 100 : 300);//2. 真正需要执行的任务
            var task = await Task.WhenAny(doing,timeOutTask);//返回任何一个完成的任务
            if (task == timeOutTask)//如果超时任务先完成了  就返回  很可惜 他没有完成!
            {
                return "很可惜 他没有完成!";
            }
            t.Stop();
            Console.WriteLine("耗时:"+t.Elapsed.TotalMilliseconds);
            return await doing;
        }

        ///


        /// 多任务一起执行
        ///

        ///
        static async Task  Tasks()
        {
            var t = new Stopwatch();
            t.Start();
            var list=new List();
            var t1 = Doing(1000, "1000");//1.定义任务
            var t2 = Doing(1500, "1500");
            var t3 = Doing(1200, "1200");
            var tasks = new[] {t1, t2, t3};//2.任务组

            var process = tasks.Select(async tt =>//3.等待任务结束  并保存值
            {
                var result = await tt;
                list.Add(result);
            });
            await Task.WhenAll(process);//4.等待处理完全
            foreach (var i in list)//5.查看结果
            {
                Console.WriteLine(i);
            }
            t.Stop();
            Console.WriteLine("耗时:" + t.Elapsed.TotalMilliseconds);
      
           
        }

C# 使用Task实现任务超时,多任务一起执行

标签:seconds   bool   tar   ota   console   any   没有   from   退出   

原文地址:http://www.cnblogs.com/change4now/p/8012350.html


评论


亲,登录后才可以留言!