• C# Task多线程


    来自Eleven老师示例

            private void btnTask_Click(object sender, EventArgs e)
            {
                Console.WriteLine();
                Console.WriteLine("******************btnTask_Click 异步方法 start {0}********************", Thread.CurrentThread.ManagedThreadId);
    
                //Thread thread = new Thread(() => Console.WriteLine("Thread,,{0}", Thread.CurrentThread.ManagedThreadId));
                //thread.Start();
                //ThreadPool.QueueUserWorkItem(t => Console.WriteLine("ThreadPool,,{0}", Thread.CurrentThread.ManagedThreadId));
                //new Action(() => Console.WriteLine("异步调用,,{0}", Thread.CurrentThread.ManagedThreadId)).BeginInvoke(null, null);
                //Task task = Task.Run(() => Console.WriteLine("Task,,{0}", Thread.CurrentThread.ManagedThreadId));
                //Parallel.Invoke()
                Console.WriteLine("Eleven接到一个项目");
                Console.WriteLine("沟通需求,确认需求,谈妥价格");
                Console.WriteLine("签合同收取50%费用");
                Console.WriteLine("高级班筛选学员,组建团队");
                Console.WriteLine("需求分析,系统设计,模块划分");
                Console.WriteLine("开始干活。。。。");//都是eleven老师干的  所以是主线程
    
                //多人一起干活,,是不是  该用多线程了
                TaskFactory taskFactory = new TaskFactory();
                List<Task> taskList = new List<Task>();
                //有个问题,如果想每个task后都输出一个进度,怎么办?
    
                taskList.Add(taskFactory.StartNew(() => this.Coding("backbone", "Client")));//.ContinueWith(
                taskList.Add(taskFactory.StartNew(() => this.Coding("滑猪小板", "DB  ")));
                taskList.Add(taskFactory.StartNew(() => this.Coding("Adan", "WechatClient")));
                taskList.Add(taskFactory.StartNew(() => this.Coding("SoWhat", "BackService")));
                taskList.Add(taskFactory.StartNew(() => this.Coding("馒头哥", "Protal")));
                //有没有又等待,又不卡界面的   (new 一个子线程,全包裹起来,然后waitall)
    
                taskList.Add(taskFactory.ContinueWhenAny(taskList.ToArray(), t => Console.WriteLine("第一个完成的获取红包奖励 {0}", Thread.CurrentThread.ManagedThreadId)));
                taskList.Add(taskFactory.ContinueWhenAll(taskList.ToArray(), tList => Console.WriteLine("进入一个联调测试阶段 {0}", Thread.CurrentThread.ManagedThreadId)));
    
                Task.WaitAny(taskList.ToArray());//等待任意一个任务的完成,会阻塞当前线程
                Console.WriteLine("某个模块开发完成后,老师部署起来准备测试");
    
                Task.WaitAll(taskList.ToArray());//等待所有任务的完成,会阻塞当前线程
                Console.WriteLine("开发验收完毕,老师收取剩余费用");
                Console.WriteLine("项目结束后,老师给大家分钱");
    
    
                Console.WriteLine("******************btnTask_Click 异步方法 end   {0}********************", Thread.CurrentThread.ManagedThreadId);
                Console.WriteLine();
            }
  • 相关阅读:
    【Alpha】技术规格说明书
    【Alpha】第十次Scrum meeting
    【Alpha】第九次Scrum meeting
    【Alpha】第八次Scrum meeting
    【Alpha】第七次Scrum meeting
    【Alpha】特殊情况通知
    S2X环境搭建与示例运行
    [2018福大至诚软工助教]结对作业1测试结果
    机器学习
    机器学习
  • 原文地址:https://www.cnblogs.com/Jerrycjc/p/7761636.html
Copyright © 2020-2023  润新知