Net 4.0 Parallel 编程(五)Task(中)
2012-02-10 09:33
162 查看
在上篇文章中我们看过了如何创建Task,本篇文章就各种类型Task的使用进行说明。
?
在每次调用ContinueWith方法时,每次会把上次Task的引用传入进来,以便检测上次Task的状态,比如我们可以使用上次Task的Result属性来获取返回值。上面的代买我们也可以这么写:
?
?
我们可以看到运行结果是:
![](http://images.cnblogs.com/cnblogs_com/Henllyee/Windows-Live-Writer/94b18e92783d_DBC0/image_thumb.png)
上面的代码中outTask.Wait()表示等待outTask执行完成。
?
看到运行结果:
![](http://images.cnblogs.com/cnblogs_com/Henllyee/Windows-Live-Writer/94b18e92783d_DBC0/image_thumb_1.png)
?
![](http://images.cnblogs.com/cnblogs_com/henllyee/png-1665.png)
作者:Henllyee Cui
出处: http://henllyee.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明。
if ($ != jQuery) {
$ = jQuery.noConflict();
}
var isLogined = true;
var cb_blogId = 33262;
var cb_entryId = 1863923;
var cb_blogApp = "Henllyee";
var cb_blogUserGuid = "e28d3d0b-63cf-dd11-9e4d-001cf0cd104b";
var cb_entryCreatedDate = '2010/10/28 22:04:00';
Task Continuations
首先我们来看看延续的Task,所谓的延续的Task就是在第一个Task完成后自动启动下一个Task。我们通过ContinueWith方法来创建延续的Task。我们假设有一个接受xml解析的服务,首先从某个地方接受文件,然后解析入库,最后返回回执是否解析正确:?
?
Detached Nested Tasks
有些情况下我们需要创建嵌套的Task,嵌套里面又分为分离的和不分离的。其创建的方式很简单,就是在Task的body里面创建一个新的Task。如果新的Task未指定AttachedToParent选项,那么就是分离嵌套的。我们看下面这段代码:?
![](http://images.cnblogs.com/cnblogs_com/Henllyee/Windows-Live-Writer/94b18e92783d_DBC0/image_thumb.png)
上面的代码中outTask.Wait()表示等待outTask执行完成。
Child Tasks
我们将上面的代码加上TaskCreationOptions选项:?
![](http://images.cnblogs.com/cnblogs_com/Henllyee/Windows-Live-Writer/94b18e92783d_DBC0/image_thumb_1.png)
Cancellation Task
如何取消一个Task呢,我们通过cancellation的tokens来取消一个Task。在很多Task的Body里面包含循环,我们可以在轮询的时候判断IsCancellationRequested属性是否为True,如果是True的话,就可以停止循环以及释放资源,同时抛出OperationCanceledException异常出来。来看一段示例代码:?
总结
本篇文章中我们看过了创建各种不同的Task以及如何取消Task,下篇文章中会就异常处理以及Task Laizy进行说明![](http://images.cnblogs.com/cnblogs_com/henllyee/png-1665.png)
作者:Henllyee Cui
出处: http://henllyee.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明。
if ($ != jQuery) {
$ = jQuery.noConflict();
}
var isLogined = true;
var cb_blogId = 33262;
var cb_entryId = 1863923;
var cb_blogApp = "Henllyee";
var cb_blogUserGuid = "e28d3d0b-63cf-dd11-9e4d-001cf0cd104b";
var cb_entryCreatedDate = '2010/10/28 22:04:00';
相关文章推荐
- Net 4.0 Parallel 编程(四) Task(上)
- Net 4.0 Parallel 编程(六)Task(下)
- Net 4.0 Parallel 编程(七)Task中的数据共享(上)
- Net 4.0 Parallel 编程(九)Task中的数据共享(下)
- [转载]Net 4.0 Parallel 编程 -Task
- .Net 4.0 Parallel 编程(五)Task(中)
- .Net 4.0 Parallel 编程(九)Task中的数据共享(下)
- .Net 4.0 Parallel 编程(七)Task中的数据共享(上)
- .Net 4.0 Parallel 编程(四) Task(上)
- .Net 4.0 Parallel 编程(六)Task(下)
- 一起谈.NET技术,.Net 4.0 Parallel 编程(五)Task (中)
- Asp.NET 4.0 ajax实例--DataView 模板编程1
- .NET 4 并行(多核)编程系列之四 Task的休眠
- NET 4.0 任务(Task)
- VS2010&.Net 4.0 之并行运算(Parallel)(For、Foreach)
- ASP.NET AJAX 4.0的模版编程(Template Programming)介绍
- ASP.NET AJAX 4.0的模版编程(Template Programming)介绍
- NET 4.0 Task用法
- .NET 4.0 任务(Task)