【发布时间】:2014-07-17 21:56:57
【问题描述】:
我最好先解释一下我正在尝试做的事情的高级概述(以防万一我要解决这个可怕的错误):在 TFS 中,我们有一个包含“优先级”的“故事”工作项“ 场地。在任何给定时间,我们可能有 20-30 个具有优先级的故事。例如,我们可能有 20 个完全优先的故事(1 到 20),然后想要创建一个应该是我们新的首要任务的新故事。所以,我希望能够给它优先级 1,然后有一个服务器端插件,它将更新所有其他故事的优先级,这样我最终得到 1 到 21(1 是我们的新故事)刚刚创建)。
为此,我为 TFS 2010 创建了一个订阅 WorkItemChangedEvent 的服务器端插件。判断优先级是否已更新是足够聪明的,因此在这种情况下它只会更改工作项。我遇到的问题是,如果我改变优先级并运行WorkItem.Save(),它会再次触发WorkItemChangedEvent,并且优先级发生了变化,所以逻辑为真,它会再次更新并保存。
之前,我创建了一个服务器端插件,将其中一个日期时间字段的时间更新为 00:00:00(如果它还不是 00:00:00)并注意到了这种行为。这不是太大的问题,因为在第二次运行时,什么都不会发生,因为时间已经是 00:00:00。但是在这种尝试更新一大堆工作项的优先级的情况下,它是一个交易破坏者。有没有办法阻止 WorkItem.Save() 触发 WorkItemChangedEvent?也许另一种方法可以完全做到这一点?
【问题讨论】:
标签: tfs event-handling