前言:

①取消task任务之CancellationTokenSource的用法;

②task的线程管控方法Task..Wait(time),Task.WaitAll(), Task.WaitAny(),task.ContinueWith.

1.声明参数

 CancellationTokenSource tokenSource = new CancellationTokenSource();CancellationToken token = tokenSource.Token;ManualResetEvent resetEvent = new ManualResetEvent(true);

2.定义Task

Task task = new Task(async () => {while (true) {  if (token.IsCancellationRequested) {return;}// 初始化为true时执行WaitOne不阻塞resetEvent.WaitOne();// Doing something.......// 模拟等待100msawait Task.Delay(100);}}, token);task.Start();

3.暂停Task

resetEvent.Reset();

4.继续Task

resetEvent.Set();

5.取消Task

tokenSource.Cancel();

实例:

 #region TASK用法举例static void TasKTest(){//带返回值的taskTask<String> mytask = Task.Run(async () =>{await Task.Delay(5000);return "老铁666";}, cancellationToken.Token);//cancellationToken.Cancel();while (!mytask.Wait(100)) //在指定时间执行完成就返回true{Console.Write(".");}Console.WriteLine(mytask.Result);//task任务取消,所以获取task.Result会报错Task taskFactory = Task.Factory.StartNew(() =>{Thread.Sleep(1000);Console.WriteLine("perfect!");});Console.WriteLine(taskFactory.Status);taskFactory.Wait();//taskFactory任务完成才往下执行Task.WaitAll(mytask, taskFactory);//所有任务完成再往下执行Task.WaitAny(mytask, taskFactory);//任一任务完成就往下执行Console.WriteLine(taskFactory.Status);Task taskTest = taskFactory.ContinueWith(DoOnSecond);//ContinueWith用法举例}static void DoOnSecond(Task t){Console.WriteLine("task {0} finished", t.Id);Console.WriteLine("this task id {0}", Task.CurrentId);Console.WriteLine("do some cleanup");}#endregion

进技术交流群的,加小编微信zls20210502,切记备注:进群!

历史经典文章回顾:以下都是以往阅读量好,比较经典的篇章!(下面是超链接,点击就可以过去)

C# 看懂这100+行代码,你就真正入门了(经典)

C# WPF项目实战(经典)

C# NOPI 项目实战(经典)(可下载项目源码)WPF【框架学习】MVVM初探(经典)

C# action,delegate,func的用法和区别

C#接口的作用(经典)

C# 三种方式实现Socket数据接收(经典)

C#实例(经典):四路光电开关&激光雷达数据采集和波形图绘制

C# Task 暂停与取消相关推荐

  1. 通过IEnumerable和IDisposable实现可暂停和取消的任务队列

    一般来说,软件中总会有一些长时间的操作,这类操作包括下载文件,转储数据库,或者处理复杂的运算. 一种处理做法是,在主界面上提示正在操作中,有进度条,其他部分不可用.这里带来很大的问题, 使用者不知道到 ...

  2. IOS开发教程第一季之03多线程day3--最大并发数,队列的暂停,取消和恢复、操作优先级、线程监听、多线程下UITableView显示图片案例

    1.NSOperation–最大并发数 什么是并发数 同时执行的任务数,比如同时开3个线程执行3个任务,并发数就是3 最大并发数的相关方法 -(NSInteger)maxConcurrentOpera ...

  3. sklearn.externals.joblib.externals.loky.process_executor.BrokenProcessPool: A task has 未能取消序列化

    背景 在做硕士毕业设计的时候,用到随机森林这个模型,在写完代码的时候,跑的时候,老是出现sklearn.externals.joblib.externals.loky.process_executor ...

  4. 计算机正在在更新怎么停止运行,Win10系统更新到一半该怎么暂停或取消呢?

    Haley 于 2020/07/14更新 备份&还原 摘要 你知道怎么在Windows更新执行后取消更新吗?仔细阅读下文,你就会知道如何终止执行中的Windows 10 更新了.如果你想以最安 ...

  5. Task和async/await详解

    一.什么是异步 同步和异步主要用于修饰方法.当一个方法被调用时,调用者需要等待该方法执行完毕并返回才能继续执行,我们称这个方法是同步方法:当一个方法被调用时立即返回,并获取一个线程执行该方法内部的业务 ...

  6. C#多线程和异步(二)——Task和async/await详解

    一.什么是异步 同步和异步主要用于修饰方法.当一个方法被调用时,调用者需要等待该方法执行完毕并返回才能继续执行,我们称这个方法是同步方法:当一个方法被调用时立即返回,并获取一个线程执行该方法内部的业务 ...

  7. 你想象中的Task后续,很简单?

    [导读]前不久,写过一篇关于Task的简短文章,通过评论和转载得到好评,刚好我昨晚又写了一篇实现简单的消息队列也提到了Task,难道不应该是看具体执行什么操作,再考虑最佳方案?本文我们再次通过简短内容 ...

  8. 【转】Task和async/await详解

    一.什么是异步 同步和异步主要用于修饰方法.当一个方法被调用时,调用者需要等待该方法执行完毕并返回才能继续执行,我们称这个方法是同步方法:当一个方法被调用时立即返回,并获取一个线程执行该方法内部的业务 ...

  9. C# Task和async/await详解

    C# Task和async/await详解 什么是异步 Task介绍 1 Task创建和运行 2 Task的阻塞方法(Wait/WaitAll/WaitAny) 1 Thread阻塞线程的方法 2 T ...

最新文章

  1. stm32内部的CAN总线
  2. mysql查询语句判断日期_mysql语句查询时间检测
  3. 基本明白了什么是冲突域和广播域
  4. java常用class类_java常用类
  5. Pytorch数据的读取与存储
  6. DELL服务器R730重装Window Server2012系统
  7. 中科院-杨力祥视频教程 04课程
  8. 三层交换机配置的步骤
  9. 2019年互联网寒冬,带你走进真实的面试杀出重围
  10. OpenLayers多源数据加载一:数据组织
  11. springboot 简单集成mybatis 及所遇到问题解决方法
  12. 聚焦扶贫,爱在瑶山,深圳市华南物流商会在行动
  13. statsmodels︱python常规统计模型库
  14. 华为nova7se乐活版支持鸿蒙,华为nova7se乐活版和nova8se的详细对比参数对比
  15. C# 实现xls类型转换为xlsx类型
  16. 设计一个形状类(接口)Shape,方法:求周长和求面积
  17. 一加7t人脸识别_一加7T深度测评:它体现了最佳的技术价值吗?
  18. 串口通信中一些常用的小工具
  19. 一只猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半加一个。到第N天早上想再吃时,见只剩下一个桃子了。
  20. oracle查看dblink信息,找出调用DBLINK的SESSION信息

热门文章

  1. shell结合expect写的批量scp脚本工具
  2. RabbitMQ 入门教程(PHP版) 第三部分:发布/订阅(Publish/Subscribe)
  3. VMware Tools安装和卸载
  4. C#种将String类型转换成int型
  5. 【NOIp 2015】【DFS】斗地主
  6. SharePoint Timer Job
  7. staem被盗_如何检查照片是否被盗
  8. 从Windows XP升级? 这是您需要了解的Windows 7
  9. React 深入学习:React 更新队列
  10. 用sort()方法随机打乱数组