多任务操作,

多任务编程(一) 开始任务

Posted on 2010-06-27 19:19 smart coder 阅读(111) 评论(0) 编辑 收藏 所属分类: 任务编程

任务编程是.net 4.0提供应对平行程序开发的一套框架,该框架的相关类在System.Thread.Task命名空间下.我们将通过一系列文章来介绍该框架的功能和应用开发。

1.创建任务

创建任务有两种方法:第一种是新建一个task对象,然后调用Start方法执行任务。第二种方法是通过工厂方法直接执行任务项。

示例代码:

 

运行结果:

创建任务的时候有四种选项,通过设置TaskCreationOption的值来选择

  1. None 默认创建选项
  2. PreferFairness 该选项告诉任务调度器对待任务公平处理,没有优先级之分。
  3. LongRunning  该选项告诉任务调度器该任务是一个执行时间较长的任务,以便任务调度器优化。
  4. AttachedToParent 该选项指明了任务之间的父子关系。

关于这些选项的使用后面会做相关介绍。

2. 传递状态

我们可通过传递一个System.Action<object>的实例对象的方式给任务传递状态变量。

示例代码:

运行结果:

3.获取结果

如果希望获取任务执行的结果,那么在创建任务的时候必须创建一个Task<T>对象,T表示你想要返回参数类型。通过Task对象的Result属性可获取任务执行结果.

示例代码如下:

运行结果:

这里大家会担心我的任务是异步执行的,获取结果时无法正确获取。其实这里的获取结果是阻塞的操作即直到获取到结果才返回。

今天主要介绍了任务编程的一些基本知识,下一篇文章中我将介绍任务取消以及等待.

多任务编程(二)取消任务

Posted on 2010-06-28 19:51 smart coder 阅读(74) 评论(0) 编辑 收藏 所属分类: 任务编程

     在多线程编程中取消操作是一个很普遍的处理操作,最简单的做法是通过设置一个标识位来判断是否取消。.net 任务并行框架提供了一套有效机制来实现任务的取消,以降低取消操作的风险。

     在.net 任务并行框架中通过CancellationTokenSource和CancellationToken这两个类来执行任务取消操作以及获取取消状态。CancellationToken是作为一个标记存放于任务中,CancellationTokenSource是标记的状态管理者和操作者。

     一种典型的检测取消操作的方式是轮询标记。

    实例代码:

运行结果:

以委托的方式检测取消操作,任务取消操作机制提供了一种委托(delegate)方式,让我们在任务取消时执行相应的操作。

示例代码:

运行结果:

有的时候我们希望在取消一个任务的同时开启另一个任务,这时我们通过标记对象的WaitHandler的WaitOne操作来实现。

示例代码:

运行结果:

任务取消就介绍到这里,下一篇将介绍任务等待.欢迎大家提出意见.

原文地址:https://www.cnblogs.com/dajiang02/p/1767246.html