递归SharePoint事件处理程序

时间:2009-12-03 20:00:55

标签: c# sharepoint event-handling

我有一个事件接收器用于列表项更新时(ItemUpdated而不是ItemUpdating)。在接收器内部,我再次更新列表项。这自然会像我期望的那样引发一些递归事件调用。在事件处理程序的开头设置一个断点,我认为它在事件中停止10次然后它就完成了。可能在SharePoint内部存在某种递归保护,以防止出现这种情况吗?

4 个答案:

答案 0 :(得分:12)

使用DisableEventFiring方法

base.DisableEventFiring();
item.update();
base.EnableEventFiring();

答案 1 :(得分:1)

更安全的方法:

try {
  this.DisableEventFiring();
  item.SystemUpdate();  // or item.Update(); or item.UpdateOverwriteVersion();
} finally {
  this.EnableEventFiring();
}

以防您的更新调用由于某种原因失败。

答案 2 :(得分:0)

现代方式(未被谴责):

EventFiringEnabled = false;
item.Update();
EventFiringEnabled = true;

答案 3 :(得分:-2)

或者使用item.SystemUpdate(),SystemUpdate会执行更新,而不会触发附加到项目的任何事件。