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


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

       1: static void Main(string[] args)
       2: {
       3:     Task parentTask = new Task(ParentTask);
       4:     parentTask.Start();
       5:  
       6:     Console.Read();
       7: }
       8:  
       9: static void ParentTask()
      10: {
      11:     Console.WriteLine("Parent task is starting");
      12:     Task childTask = new Task(ChildTask);
      13:     childTask.Start();
      14:     Thread.Sleep(2000);
      15:     Console.WriteLine("Parent task is finished");
      16: }
      17:  
      18: static void ChildTask()
      19: {
      20:     Console.WriteLine("Child task started");
      21:     Thread.Sleep(4000);
      22:     Console.WriteLine("Child task is finished");
      23: }

    结果如图:

    image

    总体来说,层次任务没有新东西,但需要注意的是,父任务在子任务之前结束(如上例),父任务的状态变为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

  • 相关阅读:
    142. 环形链表 II
    59. 螺旋矩阵 II
    996. 正方形数组的数目
    1323. 6 和 9 组成的最大数字
    面试题 17.14. 最小K个数
    389. 找不同
    1103. 分糖果 II
    背景透明度
    css3-新属性-用户界面
    响应式布局-基础结构
  • 原文地址:https://www.cnblogs.com/jes_shaw/p/2956031.html
Copyright © 2020-2023  润新知