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

网站建设要经历哪些步骤wordpress免费英文主题下载

网站建设要经历哪些步骤,wordpress免费英文主题下载,深圳.网站建设,设计师找图网站如何停止正在运行中的子线程 通过协作式取消模式强制终止线程(可能存在资源不能及时释放的泄漏风险) 通过协作式取消模式 在线程函数中,你可以周期性地检查一个标志位,以确定是否应该停止线程。该标记位可以是共享变量&#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.yayakq.cn/news/525978/

相关文章:

  • 国内网站开发 框架家装公司加盟哪个公司好
  • 做简历的网站有哪些内容宝应县网络推广公司
  • 万联芯城网站建设广州装饰公司
  • 有什么字体设计网站网站建设项目需求分析流程图
  • 旅游网站建设成都公众号推广代理
  • 成立网站的意义装饰设计公司资质
  • 深圳app开发合作网站内部优化策略
  • 网站简繁体转换js网站费用估算
  • 杭州企业网站建设 哪里好腾讯网站的品牌建设计划
  • 天津网站建设制作软件市场调查 网站建设
  • 网站开发的优势宁波建网站一站式服务
  • 网站开发费用结算免费影视剧网站
  • wordpress右侧固定快速整站优化
  • 怎么做化妆品网站内容规划网站建设药店
  • 地板网站源码北京市网站建设 维护推荐
  • 做网站可以不做后端吗有哪些网站可以免费看电影
  • 北京壹零零壹网站建设wordpress 母婴类模板
  • 免费个人简历模板网站个人博客网站需求分析
  • 技术社区网站开发例子百度怎么做自己的网站
  • 网站的构思中铁建设集团有限公司总部在哪
  • 怎么用别人网站做模板聊城做网站的网络公司
  • 网站降权是什么意思网站建设情况报告范文
  • 怎么做网站百度经验可视化编辑建站平台
  • 怎么查看网站备案信息网站建设狼盾网络
  • 优秀网站psd智博常州网站建设
  • 我想卖东西去哪个网站铜陵公司做网站
  • 做网站自己租服务器还是网络公司免费手机网站系统
  • WordPress建影视站中国建设人才信息网站查询
  • 做公司网站比较好的百度网站推广外包
  • wap网站发布专门做防盗门的网站