Task 线程控制逻辑

  Task.waitall();        //等待全部 

ask.waitall(talks,2000);        //等待全部 ,最多2000ms

Task.waitany();         //等待任意完成

 Task.whenall();        // 当完成全部  ,返回一个task 可以后续 ContinueWith()

  Task.whenany();    // 当某个完成 ,返回一个task ContinueWith()

ContinueWith() 

{
                Task d1 = Task.Run(() => { Console.WriteLine("Working"); });
                new Task(() => { }).Start();
                Task d3 = Task.Factory.StartNew(() => { });
            }
            {
                Console.WriteLine("动工");
                List<Task> tasks = new List<Task>() { };
                tasks.Add(Task.Run(() => { Coding("张三", "p1 coding "); }));
                tasks.Add(Task.Run(() => { Coding("李四", " p2 coding"); }));
                tasks.Add(Task.Run(() => { Coding("王五", "  serviceing"); }));
                tasks.Add(Task.Run(() => { Coding("赵六", "   jump"); }));

                Task.WaitAll(tasks.ToArray(), 5 * 1000);//卡界面等待执行完成,最多5000ms

                Task.WaitAny(tasks.ToArray());//等待任意一个完成等待部署
                Task.WaitAny(tasks.ToArray(), 20000);//等待任意一个完成 ,最多2000ms
                Task.WaitAll(tasks.ToArray());//卡界面等待执行完成,
                Console.WriteLine("验收");
                Task.WhenAny(tasks.ToArray()).ContinueWith(t1 => Coding("那刘", "部署环境"))  ;
                Task.WhenAll(tasks.ToArray()).ContinueWith(t1 => Coding("all", "项目解散")); ;

            }

 private static void Coding(string name, string job)
        {
            Random r = new Random();

            Console.WriteLine(Thread.CurrentThread.ManagedThreadId + ":" + name + " is " + job + "......");
            Thread.Sleep(r.Next(1, 14) * 1000);
            Console.WriteLine(Thread.CurrentThread.ManagedThreadId + ":" + name + " is " + job + "完成!");
        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值