【发布时间】:2014-01-29 14:08:10
【问题描述】:
我有一个 BrokeredMessageContext 类,它使用 Timer 定期检查和更新 BrokeredMessage 实例上的锁定,以防处理此消息的进程运行时间超过预期。它通过调用 BrokeredMessage 实例上的 RenewLock() 方法来更新锁。
我希望这个调用给我一个新的锁,它的超时时间与原始锁 (MSDN states that "You can renew locks for the same duration as the entity lock timeout, and there is no maximum duration for a lock renewal.") 相同,但是在调试时,锁超时时间似乎增加了 10-15 秒的“任意”时间。我在 BrokeredMessage 实例上设置了一个监视,我可以看到每次调用 RenewLock() 时 LockedUntilUtc 属性都会增加 10-15 秒。
有人知道为什么会这样吗?有什么办法可以延长锁的更新时间吗?
编辑:
下面迈克的回答是正确的。我发现我实际上是在尝试每十秒更新一次锁从一开始即使我的代码现在打算在锁到期前二十秒之前更新一次锁。这一切都归结为时间比较问题以及我机器上的时间错误的事实(它提前了近一分钟)。哦!
【问题讨论】:
标签: c# azure servicebus brokeredmessage