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

苏州网站关键字优化浙江省建设工程质量管理协会网站

苏州网站关键字优化,浙江省建设工程质量管理协会网站,手机设计装修软件,中国最好的室内设计公司如何停止正在运行中的子线程 通过协作式取消模式强制终止线程#xff08;可能存在资源不能及时释放的泄漏风险#xff09; 通过协作式取消模式 在线程函数中#xff0c;你可以周期性地检查一个标志位#xff0c;以确定是否应该停止线程。该标记位可以是共享变量#xff0… 如何停止正在运行中的子线程 通过协作式取消模式强制终止线程可能存在资源不能及时释放的泄漏风险 通过协作式取消模式 在线程函数中你可以周期性地检查一个标志位以确定是否应该停止线程。该标记位可以是共享变量也可以是CancellationToken。 CancellationTokenSource 和 CancellationToken 被用来发送取消请求而任务或线程通过检查 CancellationToken.IsCancellationRequested 属性或调用 ThrowIfCancellationRequested 方法来响应这个请求。 using System; using System.Threading; using System.Threading.Tasks; // // 方式1:使用CancellationToken停止标志位来停止线程 // class CancellationTokenExample { private CancellationTokenSource _cts new CancellationTokenSource(); public void StartWork() { Task.Run(() { try { // 模拟长时间运行的工作直到有取消请求时退出while while(!_cts.IsCancellationRequested) { Thread.Sleep(1000); //如果有取消请求也可以通过抛出异常结束线程_cts.Token.ThrowIfCancellationRequested();} } catch (OperationCanceledException) { //线程被取消 } }, _cts.Token); } // 调用此函数来停止线程public void StopWork() { _cts.Cancel(); } }// // 方式2:使用共享变量停止标志位来停止线程 // class ThreadStopExample { // 停止标志 public volatile bool StopRequested { get; set; } public void StartWork() { Task.Run(() { while (!StopRequested) { Thread.Sleep(1000); // 模拟工作 } }); } // 调用此函数来停止线程public void StopWork() { StopRequested true; } }强制终止线程可能存在资源不能及时释放的泄漏风险 如果在线程中使用了一个内层的无限循环while (true)这将导致线程永远不会退出这个内层循环此时要退出线程除非执行强制停止。 using System; using System.Threading; using System.Threading.Tasks; class ForceExitCaseExample {private CancellationTokenSource _cts;private Task task;public void StartWork(){//确保线程没有重复运行if (task null || (task.IsCompleted || task.IsCanceled)){_cts new CancellationTokenSource();task Task.Run(() {//注册cancel时执行Abort方法不太行偶尔报异常//_cts.Token.Register(Thread.CurrentThread.Abort);//注册cancel时执行Interrupt方法_cts.Token.Register(Thread.CurrentThread.Interrupt);try{bool workDone false;//模拟长时间运行的工作Thread.Sleep(1000);Console.WriteLine(第一阶段工作完成...);//模拟条件长时间不满足运行工作死循环while (!workDone){Console.WriteLine(第二阶段工作中...);Thread.Sleep(999);if (false){workDone true;}}}catch (Exception ex){//线程被取消 Console.WriteLine($线程异常结束{ex.Message});}}, _cts.Token);}}// 调用此函数来停止线程public void StopWork(){_cts.Cancel();} }
http://www.zqtcl.cn/news/550080/

相关文章:

  • 用国外网站 图片做自媒体seo诊断a5
  • 广州市南沙建设局网站优改网logo设计
  • 网站建设亿玛酷知名公司网站首页如何做
  • 教育网站 php网络服务公司
  • net域名做网站怎么样建站公司 转型经验
  • 赣州网站建设哪家公司好上海市建设安全协会网站
  • 网站排名优化软件有哪些西宁网站建设官网
  • 支付宝手机网站签约迪庆公司网站开发方法
  • 唐山网站关键词优化网站开发公司推荐
  • 福建响应式网站制作市工商局网站建设情况
  • 深圳网站运营托管罗伯特清崎说的网络营销是什么
  • 太仓市质监站网址百度关键字推广费用
  • 为您打造高端品牌网站pageadmin wordpress
  • 中小型网站建设的基本流程简约网站欣赏
  • 设备上哪个网站做外贸推广网络服务类型及其所采用的网络协议
  • 学习前端开发的网站动漫设计属于什么大类
  • 十堰秦楚网 十堰新闻门户网站报修网站模板
  • 家居小程序源码下载自动seo系统
  • 动态效果的网站建设技术老闵行是指哪里
  • 电商网站开发面临的技术问题做闪图的网站
  • 怎么查看网站开发语言的类型东莞哪些地方是风险区
  • 不用购买域名做网站广州网站建设培训学校
  • 城市轨道建设规范下载网站古网站典模板
  • 关于实验室建设的英文网站深圳企业网站制作公司怎样
  • wordpress全站背景音乐中山网站搜索排名
  • 搭建网站的过程透明主题wordpress
  • 丰台网站建设公司电话深圳微信商城网站设计公司
  • 做淘宝要用的网站吗上海微信网站
  • 佛山高端网站制作公司wordpress 发送邮件插件
  • 类似站酷的设计类网站网站建设需要待摊吗