Рекурсивные обработчики событий SharePoint - PullRequest
2 голосов
/ 03 декабря 2009

У меня есть получатель событий, когда обновляется элемент списка (ItemUpdated, а не ItemUpdating). Внутри получателя я снова обновляю элемент списка. Это естественно вызывает некоторые рекурсивные вызовы событий, как я и ожидал. Ставя точку останова в начале обработчика события, я считаю, что он останавливается в событии 10 раз, а затем он просто завершается. Может ли быть какая-то рекурсивная защита внутри SharePoint именно для защиты от подобных вещей?

Ответы [ 4 ]

12 голосов
/ 03 декабря 2009

Использование метода DisableEventFiring

base.DisableEventFiring();
item.update();
base.EnableEventFiring();
1 голос
/ 24 февраля 2011

Еще более безопасный подход:

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

На всякий случай, если ваш вызов обновления завершится неудачно по какой-либо причине.

0 голосов
/ 21 февраля 2014

Современный способ (не ограничен):

EventFiringEnabled = false;
item.Update();
EventFiringEnabled = true;
0 голосов
/ 04 декабря 2009

Или используйте item.SystemUpdate (), SystemUpdate выполняет обновление, не вызывая событие, прикрепленное к элементу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...