C# Task Cancellation使用总结

2024-12-31 15:50

本文主要是介绍C# Task Cancellation使用总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《C#TaskCancellation使用总结》本文主要介绍了在使用CancellationTokenSource取消任务时的行为,以及如何使用Task的ContinueWith方法来处理任务的延...

C# Task Cancellation总结

1、调用cancellationTokenSource.Cancel()时

只有在task的函数体内使用token.ThrowIfCancellationRequested()方法时才会触发ContinueWith(Action<Task>,TaskContinuationOptions.OnlyOnCanceled),且代理函数中task的Exception是null,也就是说不会抛出异常;

否则只会触发ContinueWith(Action<Task>,TaskContinuationOptions.OnlyOnhttp://www.chinasem.cnRanToCompletion),且也不会抛出异常;

C# Task Cancellation使用总结

2、调用task.Wait()时

(1)当调用token.ThrowIfCancellationRequested()之后,如果有OnlyOnCanceled延续任务,则先执行延续任务,然后在task.Wait()中抛出AggregateException异常;

C# Task Cancellation使用总结

(2)如果产生其他异常且有Onlyhttp://www.chinasem.cnOnFaulted延续任务,则先执行延续任务,然后在task.Wait()中抛出异常;

3、Task.ContinueWith方法的使用

(1)public Task ContinueWith(Action<Task> continuationAction,TaskContinuationOptions continuationOptions);

(2)函数的第一个参数是一个委托,其参数为执行ContinueWith的Task实例,同时返回一个新的Task实例;

(3)如果在实例化Task的时候连续调用ContinueWith函数,实例化出来的Task变量将是ContinueWith方法最后执行并返回的Task实例,同时,每一个ContinueWith函数将用于执行上一步ContinueWith函数返回的Task实例,而不是最初的Task实例;

(4)在监听Task.Wait()时,如果有ContinueWith方法,要特别注意是哪个Taskjs实例;

4、使用cancellationTokenSource后

需要调用Dispose方法来释放其非托管资源;

C# Task Cancellation使用总结

5、调用cancellationTokenSource.Cancel()

php

并不会终止task的执行,只是告知task取消的请求

如果不监听cancellationToken.IsCancellationRequested属性

或者不调用ThrowIfCancellationRequested方法

task将会一直执行;

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持China编程(www.cpppythoncns.com)。

这篇关于C# Task Cancellation使用总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1152874

相关文章

python subprocess.run中的具体使用

《pythonsubprocess.run中的具体使用》subprocess.run是Python3.5及以上版本中用于运行子进程的函数,它提供了更简单和更强大的方式来创建和管理子进程,本文就来详细... 目录一、详解1.1、基本用法1.2、参数详解1.3、返回值1.4、示例1.5、总结二、subproce

使用Spring Cache时设置缓存键的注意事项详解

《使用SpringCache时设置缓存键的注意事项详解》在现代的Web应用中,缓存是提高系统性能和响应速度的重要手段之一,Spring框架提供了强大的缓存支持,通过​​@Cacheable​​、​​... 目录引言1. 缓存键的基本概念2. 默认缓存键生成器3. 自定义缓存键3.1 使用​​@Cacheab

详解Java中如何使用JFreeChart生成甘特图

《详解Java中如何使用JFreeChart生成甘特图》甘特图是一种流行的项目管理工具,用于显示项目的进度和任务分配,在Java开发中,JFreeChart是一个强大的开源图表库,能够生成各种类型的图... 目录引言一、JFreeChart简介二、准备工作三、创建甘特图1. 定义数据集2. 创建甘特图3.

Python中异常类型ValueError使用方法与场景

《Python中异常类型ValueError使用方法与场景》:本文主要介绍Python中的ValueError异常类型,它在处理不合适的值时抛出,并提供如何有效使用ValueError的建议,文中... 目录前言什么是 ValueError?什么时候会用到 ValueError?场景 1: 转换数据类型场景

windows端python版本管理工具pyenv-win安装使用

《windows端python版本管理工具pyenv-win安装使用》:本文主要介绍如何通过git方式下载和配置pyenv-win,包括下载、克隆仓库、配置环境变量等步骤,同时还详细介绍了如何使用... 目录pyenv-win 下载配置环境变量使用 pyenv-win 管理 python 版本一、安装 和

Django中使用SMTP实现邮件发送功能

《Django中使用SMTP实现邮件发送功能》在Django中使用SMTP发送邮件是一个常见的需求,通常用于发送用户注册确认邮件、密码重置邮件等,下面我们来看看如何在Django中配置S... 目录1. 配置 Django 项目以使用 SMTP2. 创建 Django 应用3. 添加应用到项目设置4. 创建

Java向kettle8.0传递参数的方式总结

《Java向kettle8.0传递参数的方式总结》介绍了如何在Kettle中传递参数到转换和作业中,包括设置全局properties、使用TransMeta和JobMeta的parameterValu... 目录1.传递参数到转换中2.传递参数到作业中总结1.传递参数到转换中1.1. 通过设置Trans的

使用Python制作一个PDF批量加密工具

《使用Python制作一个PDF批量加密工具》PDF批量加密‌是一种保护PDF文件安全性的方法,通过为多个PDF文件设置相同的密码,防止未经授权的用户访问这些文件,下面我们来看看如何使用Python制... 目录1.简介2.运行效果3.相关源码1.简介一个python写的PDF批量加密工具。PDF批量加密

SpringBoot 自定义消息转换器使用详解

《SpringBoot自定义消息转换器使用详解》本文详细介绍了SpringBoot消息转换器的知识,并通过案例操作演示了如何进行自定义消息转换器的定制开发和使用,感兴趣的朋友一起看看吧... 目录一、前言二、SpringBoot 内容协商介绍2.1 什么是内容协商2.2 内容协商机制深入理解2.2.1 内容

如何使用 Bash 脚本中的time命令来统计命令执行时间(中英双语)

《如何使用Bash脚本中的time命令来统计命令执行时间(中英双语)》本文介绍了如何在Bash脚本中使用`time`命令来测量命令执行时间,包括`real`、`user`和`sys`三个时间指标,... 使用 Bash 脚本中的 time 命令来统计命令执行时间在日常的开发和运维过程中,性能监控和优化是不