/// <summary>
    /// 基于Task的多线程
    /// </summary>
    public class Tasks
    {
        public static void TaskAction()
        {
            Console.WriteLine("********************开始当前线程为{0}", Thread.CurrentThread.ManagedThreadId);
            Console.WriteLine("接到一个项目");
            Console.WriteLine("沟通,谈价钱");
            Console.WriteLine("收去50%的费用......");
            Console.WriteLine("需求分析,设计系统");
            TaskFactory taskFactory = new TaskFactory();
            List<Task> TaskList = new List<Task>();
            Action action1 = () => StarPoj("张三");
            TaskList.Add(taskFactory.StartNew(action1));
            Action action2 = () => StarPoj("李四");
            TaskList.Add(taskFactory.StartNew(action2));
            Action action3 = () => StarPoj("王五");
            TaskList.Add(taskFactory.StartNew(action3));
            Action action4 = () => StarPoj("赵六");
            TaskList.Add(taskFactory.StartNew(action4));

            Action<Task[]> ActAll = new Action<Task[]>(t => Console.WriteLine("开发完成,进行联调,当前线程为{0}", Thread.CurrentThread.ManagedThreadId));
            Task taskAll= taskFactory.ContinueWhenAll(TaskList.ToArray(), ActAll);//等待TaskList线程集合完成后再开启ActAll另一个线程

            Task.WaitAny(TaskList.ToArray());//等待某一个线程完成再执行
            Console.WriteLine("测试,收取20%费用");
            //Task.WaitAll(TaskList.ToArray());//等待所有的线程完成
            Task.WaitAll(new Task[] { taskAll });//等待taskAll该线程完成后再执行
            Console.WriteLine("收钱");
            Console.WriteLine("********************结束当前线程为{0}", Thread.CurrentThread.ManagedThreadId);
        }

        public static void StarPoj(string name)
        {
            Console.WriteLine("{0}开始编码,当前线程为{1}", name, Thread.CurrentThread.ManagedThreadId);
        }
    }

 

相关文章:

  • 2022-12-23
  • 2021-08-28
  • 2021-07-11
  • 2021-10-26
  • 2022-12-23
  • 2022-02-03
  • 2021-12-07
  • 2022-01-16
猜你喜欢
  • 2022-12-23
  • 2021-05-31
  • 2021-05-23
  • 2022-12-23
  • 2021-08-06
  • 2022-02-21
  • 2022-12-23
相关资源
相似解决方案