- 它用于在执行长时间运行的操作时,通过发送取消请求来终止操作。
- 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