首页 > 其他分享 >.NET Core的CancellationToken集成使用

.NET Core的CancellationToken集成使用

时间:2023-11-28 11:36:12浏览次数:40  
标签:Core Task Run CancellationToken 取消 RequestAborted 操作 NET httpContext

  • 它用于在执行长时间运行的操作时,通过发送取消请求来终止操作。
  • CancellationToken可以与异步操作一起使用,以便在操作执行期间检查是否已请求取消。它提供了一种优雅的方式来处理取消操作,避免了长时间运行的操作无法中断的问题。
            var httpContext = Cfg.HttpContextAccessor.HttpContext;
            await Task.Delay(5000, httpContext.RequestAborted);
            //当 httpContext.RequestAborted 监听到取消时,下面的Task.Run 方法就不会执行(httpContext.RequestAborted的状态变更只有
            //在 Task.Run先前变更,任务里的方法才不会执行)

            try
            {

                // 创建一个 Task.Run 任务。
                await Task.Run(async () =>
                {
                    await Task.Delay(5000);
                    // 取消 CancellationTokenSource。


                    KK(Thread.CurrentThread.ManagedThreadId);
                    // 执行一些操作。
                }, httpContext.RequestAborted);

            }
            catch (Exception e)
            {

            }

            //针对自定义取消可以根据注册回调 / 或者 httpContext.RequestAborted.IsCancellationRequested 属性
            //进行自定义控制操作
            httpContext.RequestAborted.Register(() =>
              {
                  Console.WriteLine($"用户取消了操作:【{httpContext.TraceIdentifier}】,接口:[{httpContext.Request.Path}]");
                  //dd.Abort();
              });

 

标签:Core,Task,Run,CancellationToken,取消,RequestAborted,操作,NET,httpContext
From: https://www.cnblogs.com/kkbk/p/17861495.html

相关文章

  • CrossEntropyLoss: RuntimeError: expected scalar type Float but found Long neural
    错误分析  这个错误通常指的是期望接受的参数类型是Float,但是程序员传入的是Int。通常会需要我们去检查传入的input和target的数据类型有没有匹配。在传入的数据中,通常input希望是Float类型,target是Int类型。  但是通常也许会发现传入的参数是符合要求的,但是......
  • 容器技术在CentOS 7中的实践:Docker与Kubernetes的整合与优化
    容器技术在CentOS7中的实践:Docker与Kubernetes的整合与优化在当今的软件开发和部署领域,容器技术已经成为一种不可或缺的工具。在Linux系统中,特别是CentOS7上,Docker和Kubernetes是两个广泛使用的容器相关工具。本文将深入探讨在CentOS7中如何实践容器技术,包括Docker的基本使用......
  • ASP.NET Core Web API设置响应输出的Json数据格式的两种方式
    前言在ASP.NETCoreWebAPI中设置响应输出Json数据格式有两种方式,可以通过添加System.Text.Json或Newtonsoft.JsonJSON序列化和反序列化库在应用程序中全局设置接口响应的Json数据格式,本文示例使用的是新的MinimalAPI模式。JSON序列化和反序列化库System.Text.JsonSystem.Te......
  • 更新 Kubernetes 集群中 Argo CD 的服务类型为 NodePort失败
    这个问题是我再做项目的时候要开区argoCD时并链接时端口开区不了kubectlpatchsvcargocd-server-nargocd-p'{"spec":{"type":"NodePort"}}'service/argocd-serverpatched(nochange)发现这样的问题这个问题我是换了一个思路是直接来做以刻kubernetes的yaml文件并且......
  • .net 依赖注入 基本原理学习
    实例化带参数类如果一个类,在初始化时需要带一个参数,则在注册时使用AddScoped、AddTransient、AddSingleton的回调函数。services.AddScoped<IConfigService>(s=>newTxtConfigServer(){FileName="mail.ini"});使用扩展方法注册在注册时需要使用AddScoped、AddTransient、......
  • .net 依赖注入“传染性”
    .net依赖注入使用的是构造函数注入方式,并且具有传染性。比如有一个控制器中使用了日志和存储两个类,而存储中使用了日志类和配置类,则都只需要在其构造函数中写需要的类,然后在容器中注册,就可以直接使用。日志类代码//日志接口publicinterfaceILog{publicvoidLog(str......
  • .net 控制反转(IoC)和依赖注入(DI)
    引言控制反转(IoC)实现方法:(隐式)依赖注入:需要什么服务(类),直接在类里面写,然后系统在创建类的时候给服务(类)自动赋值。(显式)服务定位器:需要什么服务(类)在给服务定位器要什么服务(类)1.初始化使用引用包:Microsoft.Extensions.DependencyInjection首先需要创建一个容器:ServiceCollec......
  • 转:在.NET FX 4.8项目中使用C# 8/9/10的新语法
    在.NETFX4.8项目中使用C#8/9/10的新语法吴冬wdhustInnovativeBIMtechniques 受到某些特殊原因的限制,有时候.NET项目被锁死在.NETFramework4.8,而无法升级到.NET5等更高版本,导致代码中能够使用的C#语法最高只能支持到C#7.3,而无法使用C#8及更高版......
  • 构建卓越Kubernetes安全之路:最佳实践与军规
    Kubernetes作为现代云原生计算的中流砥柱,其安全性是我们构建稳健应用生态的首要任务。在这篇博文中,我们将探讨构建卓越Kubernetes安全的道路,通过最佳实践和制定安全军规,确保您的集群免受威胁。1. 了解威胁与风险在开始构建安全之旅之前,深入了解可能的威胁和风险是关键一步。考虑容......
  • 快速入门:使用 Azure CLI 部署 Azure Kubernetes 服务 (AKS) 群集
    原文:https://learn.microsoft.com/zh-cn/azure/aks/learn/quick-kubernetes-deploy-cli本文内容开始之前创建资源组创建AKS群集连接到群集显示另外4个AzureKubernetes服务(AKS)是可用于快速部署和管理群集的托管式Kubernetes服务。在本快速入门中,请执行以下操......