• 线程 task pritce


    1.使用task类创建并执行简单任务

        使用task的构造函数来创建 任务,并调用start方法来启动任务,执行异步操作

       aitAll用于等待提供的所有 System.Threading.Tasks.Task 对象完成执行过程和Wait用于等待提供的任一个 

    等待的方法还有2个 一个是waitall,另外一个是waitnay

    //等待所有任务完成  
    public static void WaitAll(params Task[] tasks);
    //等待任意一个任务完成
    public static int WaitAny(params Task[] tasks);

     

    2. 等待任务的完成 并获取返回值

      使用任务执行异步操作时,很重要的一定就是 得到异步 操作完后的返回值 

      wait方法 可以等待 任务的执行完成 。

    代码如下: 输出  1到3的数的总和

     

     结果如下:

    3.    使用ContinueWith 在任务完成时 启动一个新任务


    在 wait方法 等待一个 任务 时,有可能 会阻塞线程, 为了解决这个问题 ,我们可以使用ContinueWith方法
    他能在一个任务完成时自动启动一个新的任务来 处理执行结果

     上述示例中任务不是等待完成来显示执行结果,而是使用ContinueWith方法,它能够知道任务在什么时候完成并启动一个新的任务来执行任务完成后的处理。

    4.  创建父子任务和任务工厂的使用

       通过Task类创建的任务是顶级任务,可以通过使用 TaskCreationOptions.AttachedToParent
       标识把这些任务与创建他的任务相关联,所有子任务全部完成以后父任务才会结束操作

    结果如下:

  • 相关阅读:
    poj3608Bridge Across Islands(旋转卡壳)
    旋转卡壳(rotate吧)
    旋转卡壳(rotate吧)
    poj2187 Beauty Contest
    poj2187 Beauty Contest
    poj1637 Sightseeing tour
    poj1637 Sightseeing tour
    bzoj2756 [SCOI2012]奇怪的游戏
    bzoj2756 [SCOI2012]奇怪的游戏
    noip胡测之8.15(没有正解)
  • 原文地址:https://www.cnblogs.com/bingyizhihun/p/8257569.html
Copyright © 2020-2023  润新知