C# 任务的异常和延续处理

写在前面

当Task在执行过程中出现异常或被取消等例外的情况时,为了让执行流程能够继续进行,可以使用延续方法实现这种链式处理;还可以针对前置任务不同的执行结果,选择执行不同的延续分支方法。子任务执行过程中的任何异常都会被传递到延续方法中进行统一处理,因此而增强了对并行任务的流程控制。

代码实现

        public static void ContinueWithException(){TaskCreationOptions tco = TaskCreationOptions.AttachedToParent;Task task = Task.Factory.StartNew(() =>{Task.Factory.StartNew(() => { throw new Exception(Environment.NewLine + "first exception" + Environment.NewLine); }, tco);Task.Factory.StartNew(() => { throw new Exception(Environment.NewLine + "second exception" + Environment.NewLine); }, tco);Task.Factory.StartNew(() => { throw new Exception(Environment.NewLine + "third exception" + Environment.NewLine); }, tco);}).ContinueWith(t => Console.WriteLine("Message:" + t.Exception.Message + Environment.NewLine), TaskContinuationOptions.OnlyOnFaulted);task.Wait();Task task01 = Task.Factory.StartNew(() =>{Console.WriteLine("task01 executed.");});Task ok1 = task01.ContinueWith(t => Console.WriteLine("Ok"), TaskContinuationOptions.NotOnFaulted);Task fail1 = task01.ContinueWith(t => Console.WriteLine("Failure:" + t.Exception.Message), TaskContinuationOptions.OnlyOnFaulted);Task task02 = Task.Factory.StartNew(() =>{throw new Exception("task02 executed.");});Task ok2 = task02.ContinueWith(t => Console.WriteLine("Ok"), TaskContinuationOptions.NotOnFaulted);Task fail2 = task02.ContinueWith(t => Console.WriteLine("Failure:" + t.Exception.Message), TaskContinuationOptions.OnlyOnFaulted);}

调用结果

如图,子任务中分别抛出的三个异常信息都被传递到了延续方法中,程序依然可以继续执行;另外task01和task02分别根据执行情况进入了不同的延续分支方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/214819.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

线程安全的哈希表ConcurrentHashMap

1. HashTable 不推荐使用,无脑给各种方法加锁 2.ConcurrentHashMap 多线程下推荐使用 锁粒度控制 HashTable直接在方法上加synchronized,相当于对哈希表对象加锁,一个哈希表只有一把锁。多线程环境下,无论线程如何操作哈希表…

深入理解Dubbo-3.高级功能剖析和原理解析

👏作者简介:大家好,我是爱吃芝士的土豆倪,24届校招生Java选手,很高兴认识大家📕系列专栏:Spring源码、JUC源码、Kafka原理、分布式技术原理🔥如果感觉博主的文章还不错的话&#xff…

利用贝叶斯超参数优化,提升模型效果更科学(附Python代码)

超参数优化在大多数机器学习流水线中已成为必不可少的一步,而贝叶斯优化则是最为广为人知的一种“学习”超参数优化方法。 超参数优化的任务旨在帮助选择学习算法中成本(或目标)函数的一组最佳参数。这些参数可以是数据驱动的(例…

【UE5】初识MetaHuman 创建虚拟角色

步骤 在UE5工程中启用“Quixel Bridge”插件 打开“Quixel Bridge” 点击“MetaHumans-》MetaHuman Presets UE5” 点击“START MHC” 在弹出的网页中选择一个虚幻引擎版本,然后点击“启动 MetaHuman Creator” 等待一段时间后,在如下页面点击选择一个人…

Apipost版IDEA插件:Apipost-Helper

Apipost-Helper是由Apipost推出的IDEA插件,写完接口可以进行快速调试,且支持搜索接口、根据method跳转接口,还支持生成标准的API文档,注意:这些操作都可以在代码编辑器内独立完成,非常好用!这里…

Tair(2):Tair安装部署

1 安装相关依赖库 yum install -y gcc gcc-c make m4 libtool boost-devel zlib-devel openssl-devel libcurl-devel yum:是yellowdog updater modified 的缩写,Linux中的包管理工具gcc:一开始称为GNU C Compiler,也就是一个C编…

N皇后,回溯【java】

问题描述 八皇后问题是十九世纪著名的数学家高斯于1850年提出的。 问题是:在88的棋盘上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上。可以把八皇后问题扩展到n皇后问题,即在nn的棋盘上摆…

AX和A(T)X的区别是?

目录 1.快速了解的例子: (1)假设所有节点的初始特征都是[1, 0, 0] ,那么AX的结果是: (2) 的结果是: (3) 总结: 2.计算结构系数的例子 (1&#xff09…

day45-46-Vue+ElementUI实现学生管理

VueElementUI实现学生管理 代码: qiushiju/java2313_vue_elementui_crud (gitee.com) 一、思考 考虑需求(登录,查询全部,基本增删改查,分页,搜索,批量) 设计数据库搭建项目 后端…

2024美赛备战2--模型建立(*****必看****)

建模 美赛涉及的建模知识范围非常广且深,纵观美赛真题不难发现,很多的模型 都是读研或者读博的时候才会真正深入开始研究,因此,对于做建模的同学来说, 是无法在赛前吃透大量模型的。推荐本科生分两个步骤去有效准备比赛…

【S32DS RTD实战】-1.3-S32K3工程生成S19,BIN,Hex文件,以及Post-build steps的妙用

目录 1 方法一:逐个生成Motorola S-record(s19,srec…),Intel HEX,Bin文件 1.1 生成Motorola S-record(s19,srec…)文件 1.2 生成Intel HEX文件 1.3 生成Bin文件 2 …

计算机服务器中了mkp勒索病毒怎么办,mkp勒索病毒解密数据恢复

网络技术的不断发展,也为网络安全带来了威胁,近期云天数据恢复中心的工程师陆续接到很多企业的求助,在本月,很多企业的计算机服务器遭到了mkp勒索病毒攻击,导致企业计算机系统瘫痪,无法正常工作&#xff0c…

《深入理解计算机系统》学习笔记 - 第四课 - 机器级别的程序

Lecture 05 Machine Level Programming I Basics 机器级别的程序 文章目录 Lecture 05 Machine Level Programming I Basics 机器级别的程序intel 处理器的历史和体系结构芯片的构成AMD 公司(Advanced Micro Devices,先进的微型设备) C, 汇编, 机器代码定义汇编/机器…

2024美赛备战1--数据处理(数据预处理,异常值处理,预测模型,插值拟合 *****必看****)

1.数据预处理 所谓数据预处理,就是指在正式做题之前对数据进行的一些处理。在有些情 况下,出题方提供的数据或者网上查找的数据并不能直接使用,比如缺少数据甚 至是异常数据,如果直接忽略缺失值,或者没发现异常数据&am…

数字图像处理(实践篇)二十一 人脸识别

目录 1 安装face_recognition 2 涉及的函数 3 人脸识别方案 4 实践 使用face_recognition进行人脸识别。 1 安装face_recognition pip install face_recognition 或者 pip --default-timeout100 install face_recognition -i http://pypi.douban.com/simple --trusted-…

川崎ZX-6R确定引进,636它真的来了,3C认证已过。

最新消息,兄弟们,你们期待已久的川崎ZX6R(636)基本已经确定引进了,官方的3C认证已经通过,那么从3C里面我们可以看到哪几个信息?产品代号ZX636J就是心心念念的ZX-6R了。 有些小伙伴不太清楚3C认…

t-SNE完整笔记 (附Python代码)

t-SNE(t-distributed stochastic neighbor embedding)是用于降维的一种机器学习算法,是由 Laurens van der Maaten 和 Geoffrey Hinton在08年提出来。此外,t-SNE 是一种非线性降维算法,非常适用于高维数据降维到2维或者3维,进行可…

分配栈空间的三种方式(基于适配qemu的FreeRTOS分析)

1、定义全局的数组 定义的全局数组属于bss段,相当于把bss段的一部分作为栈空间,栈空间的大小就是数组的大小如果把栈空间放在bss段,则在bss段清零时会多清零一段地址空间 2、在链接脚本中指定 用链接脚本在所有段的后面增加stack段&#xff…

15:00面试,15:06就出来了,问的问题真变态。。。

刚从小厂出来,没想到在另一家公司我又寄了。 在这家公司上班,每天都要加班,但看在钱给的比较多的份上,也就不太计较了。但万万没想到5月一纸通知,所有人不准加班了,不仅加班费没有了,薪资还要降…

基于springboot的大学生兼职信息管理系统(源码+数据库+文档)

摘要 基于Spring Boot的大学生兼职信息管理系统是一个为大学生和兼职公司提供服务的平台。通过该系统,大学生可以方便地寻找兼职工作机会,而兼职公司可以发布、管理和筛选合适的兼职信息。首先,系统采用了Spring Boot作为开发框架&#xff0…