Task.waitall(); //等待全部
ask.waitall(talks,2000); //等待全部 ,最多2000ms
Task.waitany(); //等待任意完成
Task.whenall(); // 当完成全部 ,返回一个task 可以后续 ContinueWith()
Task.whenany(); // 当某个完成 ,返回一个task ContinueWith()
ContinueWith()
{
Task d1 = Task.Run(() => { Console.WriteLine("Working"); });
new Task(() => { }).Start();
Task d3 = Task.Factory.StartNew(() => { });
}
{
Console.WriteLine("动工");
List<Task> tasks = new List<Task>() { };
tasks.Add(Task.Run(() => { Coding("张三", "p1 coding "); }));
tasks.Add(Task.Run(() => { Coding("李四", " p2 coding"); }));
tasks.Add(Task.Run(() => { Coding("王五", " serviceing"); }));
tasks.Add(Task.Run(() => { Coding("赵六", " jump"); }));
Task.WaitAll(tasks.ToArray(), 5 * 1000);//卡界面等待执行完成,最多5000ms
Task.WaitAny(tasks.ToArray());//等待任意一个完成等待部署
Task.WaitAny(tasks.ToArray(), 20000);//等待任意一个完成 ,最多2000ms
Task.WaitAll(tasks.ToArray());//卡界面等待执行完成,
Console.WriteLine("验收");
Task.WhenAny(tasks.ToArray()).ContinueWith(t1 => Coding("那刘", "部署环境")) ;
Task.WhenAll(tasks.ToArray()).ContinueWith(t1 => Coding("all", "项目解散")); ;
}
private static void Coding(string name, string job)
{
Random r = new Random();
Console.WriteLine(Thread.CurrentThread.ManagedThreadId + ":" + name + " is " + job + "......");
Thread.Sleep(r.Next(1, 14) * 1000);
Console.WriteLine(Thread.CurrentThread.ManagedThreadId + ":" + name + " is " + job + "完成!");
}