我有一个 BrokeredMessageContext 类,它使用 Timer 定期检查和更新 BrokeredMessage 实例上的锁,以防处理此消息的进程运行时间超过预期。它通过调用 BrokeredMessage 实例上的 RenewLock() 方法来更新锁。
我希望这个调用会给我一个与原始锁具有相同超时的新锁(MSDN 声明“您可以在与实体锁超时相同的持续时间内更新锁,并且锁更新没有最大持续时间。”) ,但在调试时,似乎锁定超时增加了“任意”10-15 秒。我在 BrokeredMessage 实例上设置了一个监视,我可以看到每次调用 RenewLock() 时 LockedUntilUtc 属性都会增加 10-15 秒。
有谁知道为什么会这样?有什么办法可以延长锁的更新时间吗?
编辑:
下面迈克的回答是正确的。我发现我实际上是在尝试从一开始就每 10 秒更新一次锁,即使我的代码现在打算在锁到期前 20 秒之前更新锁。这一切都归结为时间比较问题以及我机器上的时间错误的事实(它提前了近一分钟)。哦!