Task三个列子的分享

这次要分享的是C#Task任务的几个列子,感觉最实用的是封装的分页任务执行方法,这个方法步奏也是目前在我工作中执行多任务常用的,不知道各位也有这用的情况,那么开始吧。

成都创新互联公司从2013年创立,公司自成立以来始终致力于为企业提供官网建设、移动互联网业务开发(重庆小程序开发公司、手机网站建设、app软件定制开发等),并且包含互联网基础服务(域名、主机服务、企业邮箱、网络营销等)应用服务;以先进完善的建站体系及不断开拓创新的精神理念,帮助企业客户实现互联网业务,严格把控项目进度与质量监控加上过硬的技术实力获得客户的一致赞誉。

1.顺序任务执行

Task三个列子的分享 View Code

上面的代码中也备注了一些文字说明,其中有关键词语及意思如下:

.Task.Factory.StartNew:创建一个Task实例,创建后自动开启,无需在调用Start;

.ContinueWith:看单词的意思就明了,是继续的意思,在这里的效果也是等待上一个Task执行完毕了在继续执行本次任务,这里方法里面每个任务是一层一层传递的

效果图:

Task三个列子的分享

这里有个地方注意,sleep这是了5s但是这里使用Stopwatch统计出来只有4999ms,这个地方存在差异性,本章不解释,有兴趣朋友可以分享下或研究下。

 

2.并行任务效果

Task三个列子的分享 View Code

关键词语及意思如下:

.Func这个是C#新增的特性,这个和Action最大的区别就是Func有返回值,其他的和Action相同任意长度参数个数和类型

.Task.WaitAll这个方法有几个重载,这里用的是一个超时时间的方法,设置时间后在规定的时间就不继续等待Task【】了,如果task【】在超时时间范围内就执行完了,那么直接通过,不用再等待超时时间

效果:

Task三个列子的分享

这里依然有统计时间查问题,忽略

 

3.分页任务执行方法

Task三个列子的分享 View Code

测试代码:

Task三个列子的分享 View Code

Task三个列子的分享 View Code

这里使用的是分页的原理,把参数集合分发到创建的Task中,使用Task【】来处理这些数据,这里和第二个例子有点相识就多了分页写法而已,最后统计执行成功的条数,以此来返回给调用者,方便记录日志,此方法目前是我经常使用的,不知道是否还有更好的,各位多多分享,谢谢。

效果图:

Task三个列子的分享


名称栏目:Task三个列子的分享
标题URL:http://ybzwz.com/article/goheho.html