利用任务连续性,可以在一个任务结束后启动另一个任务。任务也可以构成一个层次结构。一个任务启动一个新任务时,就启动了一个父/子层次结构。下面的代码段在父任务内部新建一个任务。创建子任务的代码与创建父任务的代码相同,唯一的区别是这个任务从另外一个任务内部创建。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace TaskSamples
8: {
class Program
10: {
void ParentAndChild()
12: {
new Task(ParentTask);
14: parent.Start();
15: Thread.Sleep(2000);
16: Console.WriteLine(parent.Status);
17: Thread.Sleep(4000);
18: Console.WriteLine(parent.Status);
19: }
20:
void ParentTask()
22: {
, Task.CurrentId);
new Task(ChildTask);
25: child.Start();
26: Thread.Sleep(1000);
);
28: }
29:
void ChildTask()
31: {
);
33: Thread.Sleep(5000);
);
35: }
36:
string[] args)
38: {
39: ParentAndChild();
40: Console.ReadKey();
41: }
42: }
43: }
该实例运行的效果如下:
如果父任务在子任务之前结束,父任务的状态就显示为WaitingForChildrenToComplete。只要子任务也结束时,父任务就变成RanToCompletion。如果父任务用TaskCreationOptions枚举中的DetachedFromParent创建子任务时,这就无效。