关于使用 RedLockFactory.CreateLockAsync() 的超级基本问题
Super basic questions about using RedLockFactory.CreateLockAsync()
下面的伪代码可能有点太笼统了,但这更像是一个一般性的问题
using (var thelock = await redLockFactory.CreateLockAsync())
{
await doWorkWhileLockIsOn();
}
我如何知道异步 doWorkWhileLockIsOn()
方法中完成的工作在锁超出范围之前完成?
此外,如果 CreateLockAsync()
方法是可等待的,我怎么知道在我开始时我已经锁定了 运行 doWorkWhileLockIsOn()
?
如果我 Wait()
完成这些任务,那么使用异步有什么意义呢?
我确定有一些简单的东西我没有得到,因为这看起来太基础了。是否有一些神奇的状态机在后台发生,因为 运行 调试器中的这种代码告诉我这不会很好地工作。
感谢任何建议。
为了提供更多背景信息,我正在努力使一些旧的 TransactionScope
代码变得异步,但我遇到了关于 TransactionScope
在与创建它的线程不同的线程上进行处理的运行时错误.代码的结构与我上面的 redlock 示例几乎相同,这让我很担心。
How to dispose TransactionScope in cancelable async/await?
您可以看到那里有一个特殊的构造函数参数,它似乎可以解决问题。所以我在“为什么?”考虑所有这些并想知道 RedLock 会发生什么的阶段。
我需要在周五下午晚些时候筋疲力尽和沮丧时停止发布问题。
我深入研究了 RedlockFactory 的源代码和测试代码,所有我原先认为根本不起作用的东西似乎都工作得很好,无论是阅读代码还是使用调试器。
我真正的恐慌来自我在编辑过的原始问题中提到的 TransactionScope 问题,那里的问题似乎与 RedlockFactory 或任何其他实现 DisposeAsync 的项目的工作方式无关。
下面的伪代码可能有点太笼统了,但这更像是一个一般性的问题
using (var thelock = await redLockFactory.CreateLockAsync())
{
await doWorkWhileLockIsOn();
}
我如何知道异步 doWorkWhileLockIsOn()
方法中完成的工作在锁超出范围之前完成?
此外,如果 CreateLockAsync()
方法是可等待的,我怎么知道在我开始时我已经锁定了 运行 doWorkWhileLockIsOn()
?
如果我 Wait()
完成这些任务,那么使用异步有什么意义呢?
我确定有一些简单的东西我没有得到,因为这看起来太基础了。是否有一些神奇的状态机在后台发生,因为 运行 调试器中的这种代码告诉我这不会很好地工作。
感谢任何建议。
为了提供更多背景信息,我正在努力使一些旧的 TransactionScope
代码变得异步,但我遇到了关于 TransactionScope
在与创建它的线程不同的线程上进行处理的运行时错误.代码的结构与我上面的 redlock 示例几乎相同,这让我很担心。
How to dispose TransactionScope in cancelable async/await?
您可以看到那里有一个特殊的构造函数参数,它似乎可以解决问题。所以我在“为什么?”考虑所有这些并想知道 RedLock 会发生什么的阶段。
我需要在周五下午晚些时候筋疲力尽和沮丧时停止发布问题。
我深入研究了 RedlockFactory 的源代码和测试代码,所有我原先认为根本不起作用的东西似乎都工作得很好,无论是阅读代码还是使用调试器。
我真正的恐慌来自我在编辑过的原始问题中提到的 TransactionScope 问题,那里的问题似乎与 RedlockFactory 或任何其他实现 DisposeAsync 的项目的工作方式无关。