TransactedReceiveScope - 交易提交何时?

时间:2011-02-23 09:58:36

标签: .net-4.0 workflow-foundation-4

情景:

我们有一个不使用事务流的客户端的wcf工作流。 工作流包含多个顺序TransactedReceiveScopes(使用基于内容的关联)。 TransactedReceiveScopes包含自定义数据库操作。

观察:

当我们针对第一次调用运行SQL事件探查器时,我们会在配置文件跟踪中看到所有自定义数据库调用和SaveInstance调用。

我们注意到,即使SendReply位于TransactedReceiveScope的最后,有时sendreply会在事务提交前10秒发生。

我们尝试将TimeToPersist和TimeToUnload更改为零,但这没有任何效果。 (跟踪显示SaveInstance立即发生,但提交似乎被延迟了。)

问题:

我们的观察是否正确?

交易在什么时候提交?这就像垃圾收集 - 即它在不忙的时候会提交一段时间吗?

有没有办法控制提交延迟,或者是从客户端使用事务流的唯一方法(anc然后它应该在客户端提交时提交,包括持久化)。

1 个答案:

答案 0 :(得分:1)

TransactedReceiveScope在正文完成时提交事务,但是所有执行都是通过调度程序完成的,可能需要一段时间。它与垃圾收集无关,并且没有真正的方法可以影响它,以避免繁忙的机器和许多其他可能也在执行队列中的并行活动。