1/3使用Terminate活动有些时候事情会变得很糟糕,例如你没有资源,需要结束某个工作流实例;也许从外部进程中返回的一些数据的格式或者计算结果是错误的;或者数据库服务器出现问题,没有它你就不能前进等等
WF为我们提供了一个现成的方式来终止我们的工作流,那就是使用Terminate活动
Terminate活动的使用方法和Suspend活动完全相同,事实上它们的属性也是相同的
不同之处在于,当Terminate执行时,所有期望你的工作流实例要继续执行的事情都将丢失
当Terminate执行时,工作流运行时触发WorkflowTerminated事件,这正像有一个未处理的异常一样
当处理WorkflowTerminated事件时获取两个不同方面的信息是困难的,所有你能做的实际上就是检查WorkflowTerminatedEventArgs参数,看看它的Exception属性
假如该工作流实例是使用Terminate活动终止的,该异常类型将会是System
Workflow
ComponentModel
WorkflowTerminatedException而不会是其它(甚至是更加常见)的异常类型
我们就来看看在我们的工作流代码中怎样使用Terminate活动
修改我们的工作流,以便使用Terminate活动1
下载本章源代码,用VisualStudio打开ErrorTerminator文件夹中的解决方案(ErrorTerminatorCompleted文件夹中为本例的最终源代码)
选中ErrorFlow项目中的Workflow1
cs文件,打开它的工作流视图设计器界面
在错误处理程序的设计界面上删除已存在的Suspend活动,然后从工具箱中拖拽一个Terminate活动到错误处理程序的设计界面上,把该活动放在Code活动的下面
在放好该Terminate活动后,