您的位置:首页 > 编程语言 > C#

C#异步编程的实现方式(6)——层次任务

2013-03-12 16:51 429 查看
任务也可以构成一个层次结构。一个任务启动一个新任务时,就启动了一个层次结构。下面的代码段在父任务内部新建一个任务。创建子任务的代码与创建父任务的代码相同,唯一的区别是这个任务从另一个任务内部创建:

[code]
[code] static void Main(string[] args)

{

Task parentTask = new Task(ParentTask);

parentTask.Start();


 Console.Read();

}


static void ParentTask()

{

 Console.WriteLine("Parent task is starting");

 Task childTask = new Task(ChildTask);

 childTask.Start();

 Thread.Sleep(2000);

 Console.WriteLine("Parent task is finished");

}


static void ChildTask()

{

 Console.WriteLine("Child task started");

 Thread.Sleep(4000);

 Console.WriteLine("Child task is finished");

}

[/code]
[/code]
结果如图:





总体来说,层次任务没有新东西,但需要注意的是,父任务在子任务之前结束(如上例),父任务的状态变为WaitingForChildrenToComplete,直到所有子任务结束,父任务状态才变为RunToCompletion。如果父任务中创建子任务时,TaskCreationOptions枚举为DetectedFromParent,上述无效。

参考资料:《C#高级编程》,http://topic.csdn.net/u/20120306/20/24961e41-5bf2-4b81-b45b-3cdd714b12d8.html
http://www.cnblogs.com/sosowjb/archive/2012/08/12/2635280.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: