当前位置: 首页 > news >正文

C# 对多个任务进行符合管理

背景:上位机对设备进行采集,启动服务时,从数据库中查询设备信息,对每台设备开启采集服务,停止服务时,关闭全部服务。存在特殊情况,某台服务在界面上进行单独的开启或关闭、或新增服务时,支持主动开启。
基于上面业务场景用到,task的复合管理
在这里插入图片描述
代码

    internal class Program{//声明CancellationTokenSource对象static CancellationTokenSource masterCancelTokenSource = new CancellationTokenSource();//声明CancellationTokenSource对象static CancellationTokenSource c1 = new CancellationTokenSource();static CancellationTokenSource c2 = new CancellationTokenSource();static CancellationTokenSource c3 = new CancellationTokenSource();//使用多个CancellationTokenSource进行复合管理static CancellationTokenSource compositeCancel1 = CancellationTokenSource.CreateLinkedTokenSource(masterCancelTokenSource.Token, c1.Token);static CancellationTokenSource compositeCancel2 = CancellationTokenSource.CreateLinkedTokenSource(masterCancelTokenSource.Token, c2.Token);static CancellationTokenSource compositeCancel3 = CancellationTokenSource.CreateLinkedTokenSource(masterCancelTokenSource.Token, c3.Token);//程序入口static void Main(string[] args){Task.Factory.StartNew(MyTask1, compositeCancel1.Token);Task.Factory.StartNew(MyTask2, compositeCancel2.Token);Task.Factory.StartNew(MyTask3, compositeCancel3.Token);Console.WriteLine("请按回车键(Enter)停止");while (!masterCancelTokenSource.IsCancellationRequested){string key = Console.ReadLine();if (key == "1"){c1.Cancel();}else if (key == "2"){c2.Cancel();}else if (key == "3"){c3.Cancel();}else{masterCancelTokenSource.Cancel();}}//任意一个 CancellationTokenSource 取消任务,那么所有任务都会被取消。//c1.Cancel();Console.WriteLine("已停止");Console.ReadLine();}//测试方法static void MyTask1(){//判断是否取消任务while (!compositeCancel1.IsCancellationRequested){Console.WriteLine($"{DateTime.Now}----111");Thread.Sleep(1000);}}//测试方法static void MyTask2(){//判断是否取消任务while (!compositeCancel2.IsCancellationRequested){Console.WriteLine($"{DateTime.Now}----222");Thread.Sleep(1000);}}//测试方法static void MyTask3(){//判断是否取消任务while (!compositeCancel3.IsCancellationRequested){Console.WriteLine($"{DateTime.Now}----333");Thread.Sleep(1000);}}}
http://www.dtcms.com/a/613540.html

相关文章:

  • 在Eclipse IDE for Embedded C/C++ Developers软件中定义的宏,编译C源文件时编译器无法找到宏定义!
  • 从局域网到全网可用!PDFMathTranslate 翻译工具的进阶使用法
  • 深入理解 JavaScript 异步编程:从单线程到 Promise 的完整指南
  • 怎么自己做歌曲网站沈阳网站建设方案策划
  • 电脑卡顿因重复文件?AllDup无安装版快速查重+批量删除 文件管理混乱?AllDup多模式查重工具,Python开发者也能高效用
  • Dubbo Mock机制详解:服务降级与本地测试的利器
  • JDBC与事务的协同:ThreadLocal的巧妙运用
  • 底层视觉及图像增强-项目实践理论补充(十六-0-(13):HDR技术全链路解析:从原理到LED显示工程实践):从奥运大屏,到手机小屏,快来挖一挖里面都有什么
  • 深圳服务平台网站网站提示域名解析错误怎么办
  • 论文阅读13——基于大语言模型和视觉模态融合的可解释端到端自动驾驶框架:DriveLLM-V的设计与应用
  • 考研408--数据结构--day2--顺序表及其增删改查
  • 软件演示环境动态扩展与成本优化:基于目标跟踪与计划扩展的AWS Auto Scaling策略
  • 网站设计的资质叫什么花蝴蝶韩国免费视频
  • AI Agent 之工具使用:从函数定义到实际应用
  • 【C++】 map/multimap底层原理与逻辑详解
  • 如何利用国外网站开发客户wordpress的免费模板
  • C++、Java 还是测试开发?
  • Java 开发 - 粘包处理器 - 基于消息头 + 消息体(魔数验证、长度验证)
  • Spring Cloud Data Flow 简介
  • 前端性能优化指标,首次内容绘制与交互时间
  • MySQL :实用函数、约束、多表查询与事务隔离
  • 【Java架构师体系课 | MySQL篇】③ Explain执行计划详解
  • Bugku-web题目-xxx二手交易市场
  • 织梦 图片网站武冈 网站建设
  • WebForms Button:深入解析与最佳实践
  • 深度学习实战(基于pytroch)系列(二十)二维卷积层
  • 每日两道算法(2)
  • Ajax 数据请求:从 XMLHttpRequest 到现代前端数据交互的演进
  • Docker 容器连接
  • 手机网站的必要性建设网络平台 请示