zoukankan      html  css  js  c++  java
  • 多任务操作,

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

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

    示例代码:

    运行结果:

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

  • 相关阅读:
    Leetcode Substring with Concatenation of All Words
    Leetcode Divide Two Integers
    Leetcode Edit Distance
    Leetcode Longest Palindromic Substring
    Leetcode Longest Substring Without Repeating Characters
    Leetcode 4Sum
    Leetcode 3Sum Closest
    Leetcode 3Sum
    Leetcode Candy
    Leetcode jump Game II
  • 原文地址:https://www.cnblogs.com/dajiang02/p/1767246.html
Copyright © 2011-2022 走看看