问题标签 [redlock.net]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
83 浏览

c# - 关于使用 RedLockFactory.CreateLockAsync() 的超级基本问题

下面的伪代码可能有点太简单了,但这更像是一个普遍的问题

我怎么知道在doWorkWhileLockIsOn()锁超出范围之前在异步方法中完成的工作已经完成?

此外,如果该CreateLockAsync()方法是可等待的,我怎么知道在我开始运行时我有锁doWorkWhileLockIsOn()

如果我Wait()从事这些任务,那么使用异步有什么意义呢?

我敢肯定有一些简单的东西我没有得到,因为这看起来非常基本。后台是否发生了一些神奇的状态机,因为在调试器中运行这种代码向我展示了这将无法正常工作。

感谢您的任何建议。

为了提供更多背景知识,我正在努力使一些旧TransactionScope代码变得异步,并且我遇到了关于在TransactionScope与创建它的线程不同的线程上进行处理的运行时错误。代码的结构几乎与我上面的 redlock 示例相同,这让我很担心。

如何在可取消的异步/等待中处理 TransactionScope?

您可以在那里看到有一个特殊的构造函数参数,它似乎可以解决问题。所以我在“为什么?” 考虑所有这些并想知道 RedLock 会发生什么的阶段。