• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
天使之翼jesse
博客园    首页    新随笔    联系   管理    订阅  订阅

关于TaskStatus状态WaitingForChildrenToComplete 的疑问

  .net framework4.0 新增了Task这个类,其中有个枚举叫TaskStatus,但是我始终无法获得其中的一个叫WaitingForChildrenToComplete的状态:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;

namespace ConsoleApplicationTask
{
class Program
{
static void Main(string[] args)
{
var parent = new Task(ParentTask);
parent.Start();
Thread.Sleep(2000);
Console.WriteLine(parent.Status);
Thread.Sleep(6000);
Console.WriteLine(parent.Status);

Console.ReadLine();
}
static void ParentTask()
{
Console.WriteLine("task id {0}", Task.CurrentId);
Thread.Sleep(1000);
Console.WriteLine("parent started child");
var child = new Task(ChildTask);
child.Start();
}
static void ChildTask()
{
Console.WriteLine("child");
Thread.Sleep(5000);
Console.WriteLine("child finished");
}
}
}

两次parent.Status 都返回 RanToCompletion.为何,照理说第一次应该返回WaitingForChildrenToComplete。

后来发现原来实现父子任务的关系,子任务需要设置一个option来附属到父任务上,如下:

    var child = new Task(ChildTask, TaskCreationOptions.AttachedToParent);

这样第一次parent.Status就返回WaitingForChildrenToComplete状态了。

 




Follow my heart!
Stay foolish,Stay hungry!

posted @ 2011-10-11 16:57  天使之翼jesse  阅读(597)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3