我有一个工作流程,可以在ftp站点之间移动文件。 可能是用户在工作流即将复制时从ftp站点删除文件的情况。我可以检测到文件已经消失,所以我想取消关于进行文件传输的工作流程。
我使用工厂开始我的工作流程。工厂创建一个辅助类(wfManager),辅助类使用WorkflowApplication启动实际工作流。
工作流本身根据文件是否丢失来确定是否应该关闭。工作流程引用了启动它的wfManager,因此从wfManager调用workflowApplication.close
我原以为如果我使用wfManager中的WorkflowApplication.close工作流将会关闭。
然而,结束时间超时。
什么会导致关闭超时,是否有通用代码关闭或终止工作流的通用方法?
答案 0 :(得分:4)
您基本上有3个选项来结束工作流程:
Cancel
Terminate
Abort
MSDN参考:
答案 1 :(得分:2)
此外,您可以使用TerminateWorkflow活动从工作流内部终止工作流程。
还要记住,WF4中的所有内容都是异步的,如果工作流在活动中阻塞,则Cancel()调用将超时,因为调度程序当时只执行一个操作。
答案 2 :(得分:2)
如果工作流决定要取消自己,则有两个选项
在您的方案中,您应该使用终止活动。
尝试回调试图取消回调线程上的工作流的其他对象是一种灾难的处方(正如您所发现的)。同样,您无法从任何委托处理程序或扩展程序中取消工作流程。