.NET Core的CancellationToken集成使用

发布时间 2023-11-28 11:26:18作者: 蛋蛋十二月
  • 它用于在执行长时间运行的操作时,通过发送取消请求来终止操作。
  • 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();
              });