示例
using System;
using System.Threading;
using System.Threading.Tasks;
namespace TaskTest1
{
class Program
{
static void Main(string[] args)
{
Task task1 = new Task(() => { Thread.Sleep(1000); Console.WriteLine("task1"); });
Task task2 = new Task(() => { Thread.Sleep(2000); Console.WriteLine("task2"); });
//WhenAll: 所有任务执行完成,才开始执行后续任务(即ContinueWith指定的任务)
Task whenAllTask = Task.WhenAll(task1, task2);
//无论前面的任务是如何完成的(正常完成、被取消或异常结束),指定的后续任务都会执行。
whenAllTask.ContinueWith(t => Console.WriteLine("所有任务执行完成!"));
//WhenAny: 任意一个任务执行完成,就开始执行后续任务(即ContinueWith指定的任务)
Task whenAnyTask = Task.WhenAny(task1, task2);
//无论前面的任务是如何完成的(正常完成、被取消或异常结束),指定的后续任务都会执行。
whenAnyTask.ContinueWith(t => Console.WriteLine("有任务执行完成!"));
task1.Start();
task2.Start();
Console.ReadLine();
}
}
}
运行测试