C# 多线程等待子线程结束 Task.Factory

   private void button1_Click(object sender, EventArgs e)
        {
            List<Task> tasks = new List<Task>();
            Task.Factory.StartNew(() =>
            {
   
                for (int i = 0; i < 10; i++)
                {
                    Task t = Task.Factory.StartNew((k) => { Call(k); }, i);
                    tasks.Add(t);
                }
                if (tasks.Count == 0)
                {
                    throw new Exception("Task 队列未赋值");
                }
                Task.WaitAll(tasks.ToArray());
                Console.WriteLine("this is main");
            });
        
        }

  

  

   void Call(object a) 
        {
            Thread.Sleep(1000);
            Console.WriteLine(a);

        }

  测试结果

 

posted @ 2021-12-12 11:10  JohnnyLei  阅读(260)  评论(0)    收藏  举报