Task vs Func vs Action vs Predicate

Task 类代表异步操作,使用Task可以方便的实现CPU消耗操作的同步或者异步操作。

public static Task<IList<Task>> TrackedSequence(this TaskFactory factory, params Func<Task> [] functions)

public Task ContinueWhenAll<TAntecedentResult>(Task<TAntecedentResult>[] tasks, Action<Task<TAntecedentResult>[]> continuationAction);

Task 意味着可以不用自己定义线程,直接就能够进行异步操作。

Func 和 Action 的区别很简单,Func 是有返回值的委托, Action 是没有返回值的委托。

Func 通常用在LINQ;

list.Select(x=>x.SomeProperty)

或者过滤:

list.Where(x=>x.SomeValue==someOtherValue)

或者 key selection:

list.Join(otherList, x=>x.FirstKey, y=>y.SecondKey,...)

Action 通常用在 List<T>.ForEach 之类的。为每个 item 执行给定动作。可以用无参数的 Action 来执行类似: Control.BeginInvoke 或者 Dispatcher.BeginInvoke.

Predicate 实际上是 Func<T, bool> 的一个特例。


Task 是线程的高级抽象。 线程是实现并发的底层工具, 不能通过小的并发操作的组合来实现较大并发,且线程过载会极大的消耗内存。 Task 类的目的正是为了解决这些问题。 这也是为什么有了线程之后还需要 Task 类。 







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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值