WF学习笔记(四)
1、使用WorkflowApplication.OnUnhandledException 处理Code异常 ,用于产生异常的Activity:
public class ExceptionActivity:CodeActivity { protected override void Execute(CodeActivityContext context) { ; / a; } }
-无UnhandledExceptionAction方式
static void ExceptionActivityWorkflow_None() { WorkflowApplication instance = new WorkflowApplication(new ExceptionActivityWorkflow()); instance.Completed = workflowCompleted; instance.Aborted = aborted; instance.Run(); } private static void aborted(WorkflowApplicationAbortedEventArgs obj) { Console.WriteLine("aborted,实例编号:{1},Reason:{0}", obj.Reason.Message, obj.InstanceId); } static void workflowCompleted(WorkflowApplicationCompletedEventArgs e) { Console.WriteLine("完成,实例编号:{0},状态:{1}", e.InstanceId, e.CompletionState.ToString()); }
不用[OnUnhandledException]方法处理异常时,流程正常结束.调用实例的[completed],状态为[faulted]
-处理Code异常,[UnhandledExceptionAction.Abort]方式
static void ExceptionActivityWorkflow_Abort() { WorkflowApplication instance = new WorkflowApplication(new ExceptionActivityWorkflow()); instance.Completed =workflowCompleted; instance.OnUnhandledException = unhandledException_Abort; instance.Aborted = aborted; instance.Run(); } static UnhandledExceptionAction unhandledException_Abort(WorkflowApplicationUnhandledExceptionEventArgs e) { System.Console.WriteLine("unhandledException_Abort:{0}", e.UnhandledException.Message); return UnhandledExceptionAction.Abort; } private static void aborted(WorkflowApplicationAbortedEventArgs obj) { Console.WriteLine("aborted,实例编号:{1},Reason:{0}", obj.Reason.Message, obj.InstanceId); } static void workflowCompleted(WorkflowApplicationCompletedEventArgs e) { Console.WriteLine("完成,实例编号:{0},状态:{1}", e.InstanceId, e.CompletionState.ToString()); }
用[UnhandledExceptionAction.Abort]方式处理异常时,流程被结束.不会调用实例的[completed],会调用实例的[Aborted]
-UnhandledExceptionAction.Terminate
static void exceptionActivityWorkflow_Terminate() { WorkflowApplication instance = new WorkflowApplication(new ExceptionActivityWorkflow()); instance.Completed = workflowCompleted; instance.OnUnhandledException = unhandledException_Terminate; instance.Aborted = aborted; instance.Run(); } static UnhandledExceptionAction unhandledException_Terminate(WorkflowApplicationUnhandledExceptionEventArgs e) { System.Console.WriteLine("unhandledException_Abort:{0}", e.UnhandledException.Message); return UnhandledExceptionAction.Terminate; }
用[UnhandledExceptionAction.Terminate]方式处理异常时,流程正常结束.会调用实例的[completed],但状态为[faulted]
WF学习笔记(四)的更多相关文章
- C#可扩展编程之MEF学习笔记(四):见证奇迹的时刻
前面三篇讲了MEF的基础和基本到导入导出方法,下面就是见证MEF真正魅力所在的时刻.如果没有看过前面的文章,请到我的博客首页查看. 前面我们都是在一个项目中写了一个类来测试的,但实际开发中,我们往往要 ...
- IOS学习笔记(四)之UITextField和UITextView控件学习
IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...
- java之jvm学习笔记四(安全管理器)
java之jvm学习笔记四(安全管理器) 前面已经简述了java的安全模型的两个组成部分(类装载器,class文件校验器),接下来学习的是java安全模型的另外一个重要组成部分安全管理器. 安全管理器 ...
- Learning ROS for Robotics Programming Second Edition学习笔记(四) indigo devices
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...
- Typescript 学习笔记四:回忆ES5 中的类
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- ES6学习笔记<四> default、rest、Multi-line Strings
default 参数默认值 在实际开发 有时需要给一些参数默认值. 在ES6之前一般都这么处理参数默认值 function add(val_1,val_2){ val_1 = val_1 || 10; ...
- muduo网络库学习笔记(四) 通过eventfd实现的事件通知机制
目录 muduo网络库学习笔记(四) 通过eventfd实现的事件通知机制 eventfd的使用 eventfd系统函数 使用示例 EventLoop对eventfd的封装 工作时序 runInLoo ...
- python3.4学习笔记(四) 3.x和2.x的区别,持续更新
python3.4学习笔记(四) 3.x和2.x的区别 在2.x中:print html,3.x中必须改成:print(html) import urllib2ImportError: No modu ...
- Go语言学习笔记四: 运算符
Go语言学习笔记四: 运算符 这章知识好无聊呀,本来想跨过去,但没准有初学者要学,还是写写吧. 运算符种类 与你预期的一样,Go的特点就是啥都有,爱用哪个用哪个,所以市面上的运算符基本都有. 算术运算 ...
- 零拷贝详解 Java NIO学习笔记四(零拷贝详解)
转 https://blog.csdn.net/u013096088/article/details/79122671 Java NIO学习笔记四(零拷贝详解) 2018年01月21日 20:20:5 ...
随机推荐
- 网络基础(一)ARP!!!
ARP,Address Resolution Protocol,地址解析协议,用于IP到MAC地址的映射(知道ip得到mac),实现数据的封装过程.ARP是在Ethernet以上,所以是属于网络层 ...
- Creating InetAddress object in Java
I am trying to convert an address specified by an IP number or a name, both in String (i.e. localhos ...
- Verilog HDL模块的结构
一个设计是由一个个模块(module)构成的.一个模块的设计如下: 1.模块内容是嵌在module 和endmodule两个语句之间.每个模块实现特定的功能,模块可进行层次的嵌套,因此可以将大型的数字 ...
- 使用GitHub管理源代码
作为一个开发员,源码的管理是一个头等大事来的,想象一下,修改完成却发现文件丢失了,该怎么办?有了源代码管理工具,能够帮助我们查看某个代码文件的修改内存及历史修改记录. 作为.Net开发员,我使用过VS ...
- String和StringBuilder作为参数的区别
先见下面实例: public class TestDemo { @Test public void test(){ //String str = "hello"; String s ...
- 解决IE11不能进行webTest脚本录制的方法
当win7的ie8升级到ie11后,我的vs2012里的web性能测试用不了了,在打开IE11后,录制栏不见了,在网上找了很多资料没有结果,最后,在IE工具里发展了原因 工具->管理加载项-&g ...
- 备忘--简单比较SPSS、RapidMiner、KNIME以及Kettle四款数据分析工具
SPSS.RapidMiner.KNIME以及Kettle四款工具都可以用来进行数据分析,只是彼此有各自的侧重点和有劣势.它们都可以逐步的定义数据分析过程,也同样都可以对数据进行ETL处理.笔者从自己 ...
- 设置Win10文件资源管理器默认打开“这台电脑”
当Windows系统进入Win7之后,任务栏默认的文件资源管理器图标功能是“库”:Win8/Win8.1的这一按钮打开的是“这台电脑”.进入Win10之后,目前这一功能默认变为“快速访问”(曾经被称为 ...
- lucene索引并搜索mysql数据库[转]
由于对lucene比较感兴趣,本人在网上找了点资料,终于成功地用lucene对mysql数据库进行索引创建并成功搜索,先总结如下: 首先介绍一个jdbc工具类,用于得到Connection对象: im ...
- mongodb 学习笔记 09 -- shard分片
概述 shard 分片 就是 把不同的数据分在不同的server 模型 当中: 用户对mongodb的操作都是向mongs请求的 configsvr 用于保存,某条数据保存在哪个sha ...