gpt4 book ai didi

c# - .NET:由于事务超时导致的异步回滚

转载 作者:太空宇宙 更新时间:2023-11-03 16:58:13 26 4
gpt4 key购买 nike

在 C# 项目中,我在 System.Transactions.Transaction 中登记了一个(易变的)事务资源。
当发生事务超时时,回滚在工作线程中执行:显然,事务使用了定时器,并在定时器超时时调用定时器回调(Microsoft 对此问题的文档非常少) .因此,我的事务资源中 IEnlistmentNotification.Rollback(...) 的实现被异步调用。

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

最佳答案

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

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

关于c# - .NET:由于事务超时导致的异步回滚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/464781/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com