.NET 4.0 System.Threading.Tasks学习笔记

由于工作上的需要,学习使用了System.Threading.Tasks的使用,特此笔记下来。
System.Threading.Tasks的作用:
Tasks命名空间下的类试图使用任务的概念来解决线程处理的复杂问题。任务(Task)包含一个操作,以及依赖哪个任务的完成才能开始。
测试用例:
假设有任务A,B,C,D。其中C依赖A和B的完成,而D依赖A的完成。代码该怎么写呢?
代码:

 

1  TaskFactory factory  =   new  TaskFactory(); 
2  Task a  =  factory.StartNew(( new  TestAction( " A " 2 )).Do); 
3  Task b  =  factory.StartNew(( new  TestAction( " B " 5 )).Do); 
4  Task c  =  factory.ContinueWhenAll( new  Task[] { a, b }, ((preTasks)  =>  ( new  TestAction( " C " , 1 )).Do())); 
5  Task d  =  factory.ContinueWhenAll( new  Task[] { a }, ((preTasks)  =>  ( new  TestAction( " D " , 1 )).Do()));

 

 

测试任务类:

 

 1  public   class  TestAction 
 2 
 3  public  TestAction( string  actionName, int  p) 
 4 
 5      _actionName  =  actionName; 
 6      _p  =  p; 
 7 
 8 
 9  private   int  _p; 
10  private   string  _actionName; 
11  public   void  Do() 
12 
13      Console.WriteLine( " 开始执行 "   +  _actionName); 
14      Thread.Sleep( new  TimeSpan( 0 0 , _p)); 
15      Console.WriteLine( " 执行完毕 "   +  _actionName); 
16 
17 

 

需要注意的是,StartNew方法将立即执行,并不会等待后续的任务加入后才开始,这个是让我刚开始学习时很困惑的。而且StartNew方法不是一个同步方法,这意味着将立即执行后面的语句,因此,我们也就模拟出了任务A和B”同时”执行的现象。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值