• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
只是向上走
采菊东篱下,悠然见南山。
博客园    首页    新随笔    联系   管理    订阅  订阅
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

posted on 2013-03-12 16:51  jes.shaw  阅读(292)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3