2

在 C# 项目中,我在System.Transactions.Transaction. 当事务超时发生时,回滚在工作线程中执行:显然,事务使用计时器并在计时器到期时调用计时器回调( Microsoft关于此问题
的文档很少)。因此,我的事务资源中 ) 的实现是异步调用的。 IEnlistmentNotification.Rollback(...

我的问题是:我该如何处理?当然,回滚代码会更改资源的内部状态,例如通过丢弃更改。看来我必须同步对这个资源的所有访问。但是,该资源不是为线程保存而设计的。有没有人有这个问题的经验,或者是否有某种“最佳实践”?

4

1 回答 1

0

我想您可以锁定资源的回滚方法以使它们同步,因为回滚将是奇怪的情况,并且序列化访问不会在性能方面造成太多问题...

使用 IoC,例如 Windsor,实现 IInterceptor 并使用拦截器锁定所有 IResource.Rollback() 方法。这是一个正交的问题,所以它应该作为一个来实现。

于 2010-10-24T20:19:54.463 回答