• 多任务操作,


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

    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操作来实现。

    示例代码:

    运行结果:

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

  • 相关阅读:
    linux中的等待队列
    MapReduce中的作业调度
    hdfs: 数据流(二)
    hdfs: 一个分布式文件系统(一)
    记住这一天
    Partitioning, Shuffle and sort
    从wordcount 开始 mapreduce (C++hadoop streaming模式)
    iOS9 请求出现App Transport Security has blocked a cleartext HTTP (http://)
    Xcode7 下iphone6、6s进行屏幕适配
    隐藏系统的uitabbar
  • 原文地址:https://www.cnblogs.com/dajiang02/p/1767246.html
Copyright © 2020-2023  润新知