创建和运行长时间运行的工作流(三)

本文深入分析了在创建和运行长时间运行的工作流过程中,如何处理 PersistableIdleAction 枚举值的影响。通过比较 PersistableIdleAction.Unload 和 PersistableIdleAction.Persist 的区别,探讨了工作流实例在宿主中的状态和锁的管理。内容包括实例锁定、错误处理以及如何正确加载和管理已持久化的实例。
摘要由CSDN通过智能技术生成

分析PersistableIdleAction的枚举值

我们在创建和运行长时间运行的工作流(二)中的ConfigureWorkflowApplication方法里面,在wfApp的PersistableIdle事件发生后,返回PersistableIdleAction.Unload,目的是指定 System.Activities.WorkflowApplication 应保持并卸载工作流,意为宿主不再锁定工作流实例,这样我们就可以创建新的工作流宿主wfApp2去加载此工作流实例了。

但是如果我们将PersistableIdleAction.Unload改成PersistableIdleAction.Persist,那么这个时候工作流实例是被宿主锁定的。我们可以通过下面的截图看到两者的不同:

PersistableIdleAction.Unload方式


PersistableIdleAction.Persist方式


我们可以看到[InstancesTable]表中的前后两条记录在SurrogateLockOwner字段上的变化,后者被锁定。如果我们现在开始输入数字,点击EnterGuess按钮后会出现以下画面,提示:InstancePersistenceCommand 的执行被中断,因为另一个有效的 InstanceHandle 在实例“e4e87df9-8166-444d-ad94-03d8549feefe”上持有锁,这表示已加载该实例的未过时副本。应使用或卸载所加载的实例副本及其关联 InstanceHandle。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值