C#异步编程的实现方式(6)——层次任务
2013-03-12 16:51
429 查看
任务也可以构成一个层次结构。一个任务启动一个新任务时,就启动了一个层次结构。下面的代码段在父任务内部新建一个任务。创建子任务的代码与创建父任务的代码相同,唯一的区别是这个任务从另一个任务内部创建:
[/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
[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
相关文章推荐
- C#异步编程的实现方式(6)——层次任务
- C#异步编程的实现方式(4)——Task任务
- C#异步编程的实现方式(4)——Task任务
- C#异步编程的实现方式(5)——连续任务
- C#异步编程的实现方式(4)——Task任务
- C#异步编程的实现方式(5)——连续任务
- C#异步编程的实现方式(4)——Task任务
- C#异步编程的实现方式——Task任务
- spring定时任务的几种实现方式
- C#异步编程的实现方式(3)——ThreadPool线程池
- 七、java实现定时任务的三种方式
- Spring + quartz 注解的方式实现定时任务
- Quartz定时任务(纯java方式实现)
- activiti 工作流动态设置指定节点任务人、责任人、组的实现方式
- C#异步编程的实现方式——ThreadPool线程池
- Spring定时任务的实现方式--ScheduledExecutorService and ScheduledExecutorFactoryBean的简单源码解析以及使用
- Python定时任务的实现方式
- Android 定时任务的多种实现方式
- Spring定时任务的实现方式--ScheduledExecutorService
- Java实现定时任务的三种方式