wait.all和when.all
var data = new List<Student1> { new Student1 {Id=1,Name="a"}, new Student1 {Id=2,Name="b"}, new Student1 {Id=3,Name="c"}, new Student1 {Id=4,Name="d"}, new Student1 {Id=5,Name="e"}, new Student1 {Id=6,Name="f"}, new Student1 {Id=7,Name="g"}, new Student1 {Id=8,Name="l"}, new Student1 {Id=9,Name="m"} }; Random rd = new Random(); List<int> ns = new List<int>(); List<Task> taskList = new List<Task>(); foreach (var d in data) { int n = rd.Next(1,5); Console.WriteLine(n.ToString()); taskList.Add(Task.Run<int>(() => { Thread.Sleep(1000 * n); ns.Add(n); Console.WriteLine("Task.Run" + d.Id.ToString() + "-" + d.Name + "-time:" + n.ToString() + ":" + Thread.CurrentThread.ManagedThreadId.ToString()); return n; })); } Console.WriteLine("Task开始"); Task.WaitAll(taskList.ToArray()); //Task.WhenAll(taskList.ToArray()).ContinueWith(t => //{ // Console.WriteLine("Task....."); //}); Console.WriteLine("Task结束"); //Thread.Sleep(1000*30);
1、WaitAll会阻塞当前线程,知道所有任务完成
2、WhenAll开启新线程判断所有任务是否完成,ContinueWith所有任务完成后执行

浙公网安备 33010602011771号