首页 > 其他分享 >CancellationToken 取消机制

CancellationToken 取消机制

时间:2023-05-01 11:44:34浏览次数:39  
标签:CancellationToken 请求 cts 取消 file GetFile 机制

1、背景

  在我们访问一个十分耗时的请求的时候(这里以web请求举例)

  如果请求执行到一半的时候,用户把页面关掉了,那后台还在执行请求就会造成资源的浪费,所以需要引入取消请求机制

2、举例

  代码很简单,直接居个小例子

        [HttpGet("GetFile")]
        public async Task<string> GetFile(string file)
        {
            CancellationTokenSource cts = new CancellationTokenSource();//通过CancellationTokenSource产生Token
            cts.CancelAfter(3000);//超时时间3s
            cts.Token.Register(() => Console.WriteLine($"超时取消"));//注册一个取消请求后的执行事件
            return await DownFile(file, cts.Token);
        }
        private async Task<string> DownFile(string file, CancellationToken cancellationToken)
        {
            for (int i = 1; i <= 10; i++)
            {
                Console.WriteLine($"执行进度{i}");
                if (cancellationToken.IsCancellationRequested)
                {
                    return "超时";
                }
                await Task.Delay(1000);
            }
            return file + ":下载完成";
        }

  执行结果:请求在3s的时候取消掉了

3、那怎么监听页面情况呢?

  在action注入CancellationToken(net core),框架会自己监听页面情况,如:

        [HttpGet("GetFile2")]
        public async Task<string> GetFile(string file, CancellationToken cancellationToke)
        {
            cancellationToke.Register(() => Console.WriteLine($"超时取消"));//注册一个取消请求后的执行事件
            return await DownFile(file, cancellationToke);
        }

  关闭跳转Web/Postman取消等,都是断开了http请求建立的链接,断开后即触发CancellationToken

 

标签:CancellationToken,请求,cts,取消,file,GetFile,机制
From: https://www.cnblogs.com/wskxy/p/17366298.html

相关文章

  • B/S 结构系统的 缓存机制(Cookie) 以及基于 cookie 机制实现 oa 十天免登录的功能
    B/S结构系统的缓存机制(Cookie)以及基于cookie机制实现oa十天免登录的功能@目录B/S结构系统的缓存机制(Cookie)以及基于cookie机制实现oa十天免登录的功能每博一文案1.Cookie的概述2.session与Cookie之间的联系:3.Cookie的作用:4.Cookie的生成机理的原理:5......
  • Hibernate缓存机制
      Hibernate缓存分类:Hibernate的缓存范围 事务范围的缓存只能被当前事务访问,每个事务都有各自的缓存,缓存内的数据通常采用相互关联的对象形式.缓存的生命周期依赖于事务的生命周期,只有当事务结束时,缓存的生命周期才会结束.事务范围的缓存使用内存作......
  • HTTPS 研究机制
    HTTPS存在不同于HTTP的默认端口,HTTP默认端口是80或8080,HTTPS默认端口是443或者8443。HTTPS有一个加密/身份验证层(在HTTP与TCP之间),这个系统的最初研发由网景公司进行,提供了身份验证与加密通讯(数据传输)方法,现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。HTTPS和HTTP的......
  • 手写web框架--了解web运行机制。
    第一步--写一个服务端importsocketserver=socket.socket()#默认就是TCP协议server.bind(('127.0.0.1',8080))server.listen(5)whileTrue:conn,addr=server.accept()#三次四次挥手data=conn.recv(1024)#接收消息print(data)conn.se......
  • 记一次nginx配置不当引发的499与failover 机制失效
    背景nginx499在服务端推送流量高峰期长期以来都是存在的,间或还能达到告警阈值触发一小波告警,但主观上一直认为499是客户端主动断开,可能和推送高峰期的用户打开推送后很快杀死app有关,没有进一步探究问题根源。然而近期在非高峰期也存在499超过告警阈值的偶发情况,多的时候一天几......
  • B/S结构系统的会话机制(session)
    B/S结构系统的会话机制(session)目录B/S结构系统的会话机制(session)每博一文案1.session会话机制的概述2.什么是session的会话3.session的作用4.session的实现原理解释5.补充:Cookie禁用了,session还能找到吗?6.总结一下到目前位置我们所了解的域对象:7.oa项目的优......
  • 14 进程的等待与唤醒机制
    进程的等待结构:kwlst_t结构用于挂载等待的进程;经常被包含在信号量等结构,是用于保护访问受限的贡献资源;进程等待:krlsched_wait函数:获取当前正在运行的进程,设置进程状态为等待状态,执行脱链操作,并将进程加入等待结构;进程唤醒:krlsched_up函数:从等待数据结构中获取进程,然后设置......
  • linux 内核同步机制
    rw_semaphore,读写信号量和mutex很像。保护临界区的原因是其同时有被修改和读的可能,如果这个资源只是被读永远不会修改,那也不需要保护。有这样一个场景,被保护的临界区大部分情况下都是读取操作,少数情况会被修改。如果使用mutex,假设此刻一个读者进入临界区,另外一个线程也是读取操作......
  • element ui抽屉组件蒙版取消后,左侧内容可点击,可处理
    elementui抽屉组件都在用,然后需求提了一个底部蒙版不要,左侧正常点击,输入框正常输入,滚动正常滚动。在做的时候发现蒙版去了只是将当前蒙版的透明度更改了而已,蒙版还是在的,左侧依然点击不了后来想想把蒙版的宽度处理一下跟抽屉的宽度一样不就行了吗?说做就做 抽屉上定义class,......
  • 订单30分钟未支付自动取消怎么实现?
    目录了解需求方案1:数据库轮询方案2:JDK的延迟队列方案3:时间轮算法方案4:redis缓存方案5:使用消息队列了解需求在开发中,往往会遇到一些关于延时任务的需求。最全面的Java面试网站例如生成订单30分钟未支付,则自动取消生成订单60秒后,给用户发短信对上述的任......