zoukankan      html  css  js  c++  java
  • 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();
            }
  • 相关阅读:
    【设计模式】模板模式
    【设计模式】策略模式
    【设计模式】空对象模式
    【设计模式】状态模式
    【设计模式】观察者模式
    【设计模式】备忘录模式
    【设计模式】中介者模式
    【设计模式】迭代器模式
    【设计模式】解释器模式
    【设计模式】命令模式
  • 原文地址:https://www.cnblogs.com/Jerrycjc/p/7761636.html
Copyright © 2011-2022 走看看