注意点:需要将每个线程的 MemoryCacheManager 保存,这里我保存在缓存中,需要取消时根据缓存key值取出 MemoryCacheManager

        //开始Task1
private void button1_Click(object sender, EventArgs e)
{
CheckForIllegalCrossThreadCalls = false;//winform运行跨线程 ICacheManager cacheManager = new MemoryCacheManager();
var cts1 = new CancellationTokenSource();
CancellationToken ct1 = cts1.Token;
Task.Factory.StartNew(() =>
{
while (true)
{
Thread.Sleep();
listView1.Items.Add("AA当前时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
if (ct1.IsCancellationRequested)
{
// another thread decided to cancel
listView1.Items.Add("task1 canceled");
cacheManager.Remove("cts1");
break;
}
}
}, ct1); if (!cacheManager.IsSet("cts1"))
{
cacheManager.Set("cts1", cts1, );
}
} //开始Task2
private void button2_Click(object sender, EventArgs e)
{
CheckForIllegalCrossThreadCalls = false;//winform运行跨线程 ICacheManager cacheManager = new MemoryCacheManager();
var cts2 = new CancellationTokenSource();
CancellationToken ct2 = cts2.Token;
Task.Factory.StartNew(() =>
{
while (true)
{
Thread.Sleep();
listView1.Items.Add("BB当前时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
if (ct2.IsCancellationRequested)
{
// another thread decided to cancel
listView1.Items.Add("task1 canceled");
cacheManager.Remove("cts2");
break;
}
}
}, ct2); if (!cacheManager.IsSet("cts2"))
{
cacheManager.Set("cts2", cts2, );
}
} //停止Task1
private void button3_Click(object sender, EventArgs e)
{
ICacheManager cacheManager = new MemoryCacheManager();
var cts = cacheManager.Get<CancellationTokenSource>("cts1");
cts.Cancel();
} //停止Task2
private void button4_Click(object sender, EventArgs e)
{
ICacheManager cacheManager = new MemoryCacheManager();
var cts = cacheManager.Get<CancellationTokenSource>("cts2");
cts.Cancel();
}

Task 开始 停止的更多相关文章

  1. gulp-less解决遇到错误停止执行task

    来龙去脉 在用less+gulp开发时,有时候代码还没写完整,不小心保存了一下,然后gulp就开始执行gulp-less的task. 但是代码是有问题的,这时候会输出一个Potentially unh ...

  2. Android中关于Task的一些认识

    Android中Task是一个逻辑上的概念,简单地说,就是一个栈里面顺序存储着的多个Activity.这些Activity能够是来自同一个App,也能够是来自不同的Apps. Task的创建 比方之前 ...

  3. JavaScript-setInterval-周期性行定时器-倒计时

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  4. Linux Kernel 排程機制介紹

    http://loda.hala01.com/2011/12/linux-kernel-%E6%8E%92%E7%A8%8B%E6%A9%9F%E5%88%B6%E4%BB%8B%E7%B4%B9/ ...

  5. 常用Vxworks编程API

    vxWorks编程API 一.官方的Program Guide 位于安装目录下:\docs\vxworks\guide\index.html 二.常用的库: #i nclude "taskL ...

  6. client多线程

    1.多线程对象 对象可以是多线程访问,线程可以在这里分为两类: 为完成内部业务逻辑的创建Thread对象,线程需要访问对象. 使用对象的线程外部对象. 进一步假设更精细的划分.业主外螺纹成线等线,. ...

  7. C# QuartZ使用实例写成服务

    官方学习文档:http://www.quartz-scheduler.net/documentation/index.html 官方的源代码下载:http://sourceforge.net/proj ...

  8. 2017-2018-20172311 暑期编程作业:APP

    2017-2018-20172311 暑期编程作业:实现一个简单倒计时APP 写在前面:暑假的时候就单纯的想要设计一个倒计时软件,然后就通过查阅资料等学了一些,包括实现倒计时功能及显示:背景音乐的添加 ...

  9. C++11线程池的实现

    什么是线程池 处理大量并发任务,一个请求一个线程来处理请求任务,大量的线程创建和销毁将过多的消耗系统资源,还增加了线程上下文切换开销. 线程池通过在系统中预先创建一定数量的线程,当任务请求到来时从线程 ...

随机推荐

  1. web常用服务架构

    架构风格就是一种项目的设计模式.常见的架构风格有基于客户端与服务端的.基于组件模型的(EJB).分层架构(MVC).面向服务架构(SOA)等. 一.单体架构 单体架构也称为单体系统或单体应用,就是一种 ...

  2. Docs-.NET-C#-指南-语言参考-关键字-值类型:可以 null 的值类型

    ylbtech-Docs-.NET-C#-指南-语言参考-关键字-值类型:可以 null 的值类型 1.返回顶部 1. Nullable value types (C# reference) 2019 ...

  3. java获取全部子类或接口的全部实现

    在JAVA中,获取一个类的全部父类是比较简单的,只需要通过反射(Class的getSuperclass()方法)即可.然而,如果想获得一个类的所有子类,或者获得实现某一个接口的所有实现类,相对比较麻烦 ...

  4. bat批处理文件怎么将路径添加到path环境变量中

    bat批处理文件怎么将路径添加到path环境变量中 摘自:https://zhidao.baidu.com/question/1887763143433391788.html 永久性的: @echo ...

  5. [译]使用Pandas读取大型Excel文件

    上周我参加了dataisbeautiful subreddit上的Dataviz Battle,我们不得不从TSA声明数据集创建可视化.我喜欢这种比赛,因为大多数时候你最终都会学习很多有用的东西. 这 ...

  6. Hadoop记录-部署hadoop环境shell实现

    #!/bin/bash menu() { echo "---欢迎使用hadoop部署管理程序---" echo "# 1.初始化Linux环境" echo &q ...

  7. python flask框架学习(一)——准备工作和环境配置与安装

    Flask装备: 学习自:知了课堂Python Flask框架——全栈开发 1.Python版本:3.6 2.Pycharm软件: 3.安装虚拟环境: (1)安装virtualenv: pip ins ...

  8. 【sqlalchemy】

    https://www.cnblogs.com/ccorz/p/5711955.html

  9. 【Leetcode_easy】1033. Moving Stones Until Consecutive

    problem 1033. Moving Stones Until Consecutive 参考 1. Leetcode_easy_1033. Moving Stones Until Consecut ...

  10. ffmpeg.编译(20191129)

    1.一步步实现windows版ijkplayer系列文章之一——Windows10平台编译ffmpeg 4.0.2,生成ffplay - HarlanC - 博客园.html(https://www. ...