C# Task的使用---嵌套使用Task

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

   1: using System;
   2: using System.Collections.Generic;
   3: using System.Linq;
   4: using System.Text;
   5: using System.Threading;
   6: using System.Threading.Tasks;
   7: namespace TaskSamples   
   8: {
   9:     class Program
  10:     {
  11:        static void ParentAndChild()
  12:         {
  13:             var parent = 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:  
  21:         static void ParentTask()
  22:         {
  23:             Console.WriteLine("task id {0}", Task.CurrentId);
  24:             var child = new Task(ChildTask);
  25:             child.Start();
  26:             Thread.Sleep(1000);
  27:             Console.WriteLine("parent started child");
  28:         }
  29:  
  30:         static void ChildTask()
  31:         {
  32:             Console.WriteLine("child");
  33:             Thread.Sleep(5000);
  34:             Console.WriteLine("child finished");
  35:         }
  36:  
  37:         static void Main(string[] args)
  38:         {
  39:             ParentAndChild();
  40:             Console.ReadKey();
  41:           }
  42:     }
  43: }

该实例运行的效果如下:

image

 

如果父任务在子任务之前结束,父任务的状态就显示为WaitingForChildrenToComplete。只要子任务也结束时,父任务就变成RanToCompletion。如果父任务用TaskCreationOptions枚举中的DetachedFromParent创建子任务时,这就无效。

转载于:https://www.cnblogs.com/jerry01/archive/2012/09/17/2688440.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值