У меня есть приемник событий, когда обновляется элемент списка (ItemUpdated, а не ItemUpdating). Внутри получателя я снова обновляю элемент списка. Это, естественно, вызывает некоторые рекурсивные вызовы событий, как я ожидал. Поставив точку останова в начале обработчика события, я считаю, что это прерывание в событии 10 раз, а затем оно просто заканчивается. Возможно ли какая-то защита рекурсии внутри SharePoint именно для защиты от такого рода вещей?Рекурсивные обработчики событий SharePoint
2
A
ответ
-2
Или используйте item.SystemUpdate(), SystemUpdate делает обновление, не вызывая какое-либо событие, прикрепленное к элементу.
12
Используйте DisableEventFiring метод
base.DisableEventFiring();
item.update();
base.EnableEventFiring();
+1
Это единственный * правильный * способ сделать это в SharePoint 2007, и EventFiringEnabled = истина/ложь; это ТОЛЬКО * правильный * способ сделать это в SharePoint 2010. – mjsabby
1
Еще более безопасный подход:
try {
this.DisableEventFiring();
item.SystemUpdate(); // or item.Update(); or item.UpdateOverwriteVersion();
} finally {
this.EnableEventFiring();
}
Только в случае, если ваш звонок обновление не по какой-то причине.
0
Современный способ (не depricated):
EventFiringEnabled = false;
item.Update();
EventFiringEnabled = true;
Смежные вопросы
- 1. SharePoint обработчики событий Список 2010 каскадом
- 2. jQuery._data обработчики событий
- 3. dojo clone обработчики событий
- 4. C# обработчики событий мыши
- 5. обработчики событий в vb
- 6. SerialPort.Close() и обработчики событий
- 7. Что такое обработчики событий?
- 8. Блокировать обработчики событий Javascript?
- 9. многопоточности обработчики событий
- 10. Wpf DataTemplate Обработчики событий
- 11. PHP нажмите обработчики событий
- 12. Обработчики событий формы
- 13. Обработчики событий jQuery
- 14. Программным креплени обработчики событий
- 15. Обработчики событий jQuery-связанных
- 16. Обработчики событий не запускаются
- 17. Несвязанность JQuery Обработчики событий
- 18. Обработчики событий C#
- 19. Как синхронизировать обработчики событий
- 20. Обработчики событий Swing Component
- 21. Вью сочетающие обработчики событий
- 22. обработчики событий javascript
- 23. Обработчики событий Oxid eShop
- 24. Обработаны обработчики событий асинхронно?
- 25. Обработчики событий не работают
- 26. Обработчики событий BackgroundWorker
- 27. C# пользовательские обработчики событий
- 28. Detach обработчики событий выборочно
- 29. Обработчики событий в ember.js
- 30. WinForms и обработчики событий
Оба являются хорошими ответами, но ваше решение немного чище. Cheers –
Я использую оба эти вместе. У меня были случаи, когда SystemUpdate не остановил рекурсию, не имея также DisableEventFiring. И даже мы используем DisableEventFiring, я также вызываю SystemUpdate (false), потому что я не хочу изменять Modify By или Item Version из Event Receiver. –
-1. Это НЕ ТОЧНО, SystemUpdate() - непрозрачный метод, реализация которого вы не знаете, он только документально обновляется без изменения изменений в полях Модифицированное время или Модифицированное Поля или, при необходимости, версии элемента. Он используется внутри компании SharePoint для таких вещей, как форумы для дискуссий, где вы не хотите изменять оригинального автора сообщения и т. Д. События срабатывают, на самом деле функциональность, на которую вы сейчас полагаетесь, для прекращения распространения события был почти почти изменен в SharePoint 2010 и может в будущем. – mjsabby