直接上代码:
static void Main(string[] args)
{
Task<int[]> parent = new Task<int[]>(() =>
{
var Result = new int[3];
new Task(() => Result[0] = sum(1000), TaskCreationOptions.AttachedToParent).Start();
new Task(() => Result[1] = sum(2000), TaskCreationOptions.AttachedToParent).Start();
new Task(() => Result[2] = sum(3000), TaskCreationOptions.AttachedToParent).Start();
return Result;
});
var cwr = parent.ContinueWith(
par => Array.ForEach(par.Result, Console.WriteLine));
parent.Start();
Console.ReadLine();
}
private static int sum(int p)
{
return p;
}
输出结果:
本例中,TaskCreationOptions.AttachedToParent将子Task与创建它的Task关联,这样除非子Task运行完成, 父Task才会认为自己已经结束。同样的在ContinueWith方法创建Task时,也可以指定AttachedToParent标志