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

大连网站建安徽龙山建设有限公司网站

大连网站建,安徽龙山建设有限公司网站,所以免费爱做网站,重庆模板建站定制网站在自动化设备动作流程中,人为任意想取消当前动作,常见方法是使用全局变量,实时检测变量决定退出。这里介绍一个System.Threading空间下的 CancellationTokenSource类,他可以设置超时,设置信息等封装 基本使用超时和手…

在自动化设备动作流程中,人为任意想取消当前动作,常见方法是使用全局变量,实时检测变量决定退出。这里介绍一个System.Threading空间下的 CancellationTokenSource类,他可以设置超时,设置信息等封装

基本使用超时和手动设置退出

CancellationTokenSource:用于控制和生成CancellationToken

CancellationToken:取消令牌,可以注册取消回调等操作

1、先实例化CancellationTokenSource

2、注册取消回调

3、启动一个Task,模拟耗时操作

4.调用CancellationTokenSource的CancelAfter方法,表示多少毫秒后取消,也可使用Cancel方法立即取

5、IsCancellationRequested属性判断任务是否取消,没取消则一直输出i

抛出异常退出

以下举例 async await的异步使用,用到CancellationToken来取消任务,并手动设置抛异常传达信息

[HttpGet]public async Task<IActionResult> CancelDownLoad(CancellationToken cancellationToken){try{var _client = _httpClient.CreateClient("bigDownLoad");_client.DefaultRequestHeaders.Range = new RangeHeaderValue(0, 1024 * 1024 * 50);await Task.Delay(1000);if (!cancellationToken.IsCancellationRequested){var resp = await _client.GetAsync("http://du.cainiaoxt.cn/dd.php/windows_7_ultimate_x64_2023.iso",cancellationToken);if (resp.StatusCode != System.Net.HttpStatusCode.OK){string chunkFileFolder = @"D:\";string bigFileName = chunkFileFolder + @"\bigFile" + new Random().Next(0, 10);using (FileStream fs = new FileStream(bigFileName, FileMode.Create)){var respStream = await resp.Content.ReadAsStreamAsync();await respStream.CopyToAsync(fs);await respStream.FlushAsync();}}return Ok();}else{  // 设置抛异常退出cancellationToken.ThrowIfCancellationRequested();return BadRequest("下载任务取消!");}}catch (OperationCanceledException ex){Console.WriteLine("下载任务取消!"+ex.Message);return BadRequest("下载任务取消!");}}

关联退出

另外可以设置退出链接,多个关联全部退出

// See https://aka.ms/new-console-template for more information
CancellationTokenSource cts=new CancellationTokenSource();
cts.Token.Register(() => { Console.WriteLine("任务1已停止"); });CancellationTokenSource cts2 = new CancellationTokenSource();
cts2.Token.Register(() => { Console.WriteLine("任务2已停止"); });CancellationTokenSource cts3 = new CancellationTokenSource();
cts3.Token.Register(() => { Console.WriteLine("任务3已停止"); });
var linkTokenSource=CancellationTokenSource.CreateLinkedTokenSource(cts.Token, cts2.Token, cts3.Token);linkTokenSource.Token.Register(() => { Console.WriteLine("关联token取消"); });
Task.Run(() =>
{int i = 1;while (!cts.IsCancellationRequested){i++;Console.WriteLine("任务1:"+i);Task.Delay(500).Wait();}});Task.Run(() =>
{int i = 1;while (!cts2.IsCancellationRequested){i++;Console.WriteLine("任务2:"+i);Task.Delay(500).Wait();}});Task.Run(() =>
{int i = 1;while (!cts3.IsCancellationRequested){i++;Console.WriteLine("任务3:"+i);Task.Delay(500).Wait();}});Task.Run(() =>
{int i = 1;while (!linkTokenSource.IsCancellationRequested){i++;Console.WriteLine("关联token任务:" + i);Task.Delay(500).Wait();}});var key=Console.ReadKey();
if(key.Key==ConsoleKey.A)
{cts.Cancel();
}
Console.ReadLine();
http://www.yayakq.cn/news/273851/

相关文章:

  • 在网站上做外贸营销策划方案范文
  • 各大网站头条ppt模板免费网页
  • 长春火车站有几个传奇高端网站设计制作
  • 还能做网站的分类自己怎么建购物网站
  • 包装公司网站模板微信小程序组件库
  • 网站怎么优化到首页怎么让关键词快速排名首页
  • 网络维护可以自学吗网站seo优化免
  • 聊城做网站公司信息深圳网站运营
  • 建站网站怎么上传代码兰州市政建设集团网站
  • 网站改名工信部需要怎么做号码认证
  • 高邮企业网站建设少儿编程
  • 网站上面的水印怎么做wordpress怎么加速权限不够
  • 深圳做网站排名价格网站建设是自学好还是
  • 辽宁省建设厅官方网站职称评定wordpress 开源 小程序
  • 网站 兼容性网站备案 条例
  • 电商网站支付接口高校招生网站建设
  • 网站建设及维护专业wordpress绑定多个域名的方法
  • 网站建设催款函广州代做网站
  • 网站建设app开发合同游戏网络游戏
  • 网站备案要多少钱学校网站建设评审会议通知
  • 石家庄网站建设吧专业团队优质网站建设方案
  • 深圳龙岗建网站公司长春财经学院是公办还是民办
  • 网站怎么做跳出提示筐网站开发软件网站开发
  • 设计网站中如何设置特效做网站延期交付了
  • 新乡手机网站建设哪家好什么是网络设计图
  • 公司要做网站最新房价数据出炉
  • 创新的品牌网站建设中国建设工程协会标准网站
  • 上传网站程序平台推广是什么工作
  • 山东三强建设咨询有限公司网站泰安做网站建设的公司
  • 如何汇报网站建设wordpress检查元素