Прослушиватель событий SharePoint 2010 - SPItemEventReceiver с многопоточностью - PullRequest
1 голос
/ 17 апреля 2011

У меня есть обработчик событий dll, который реализует SPItemEventReceiver. Мне нравится запускать фоновый поток в этой DLL. События передаются в этот фоновый поток для обработки, чтобы методы обработки событий не блокировались. SharePoint 2010 загружает dll, но поток не запускается. Я также не могу использовать класс ThreadPool. Является ли это ограничение, накладываемое SharePoint на внешние обработчики событий? Как я могу обойти это?

1 Ответ

2 голосов
/ 18 апреля 2011

Предполагая, что вы используете события 'post' (ItemAdded, ItemUpdated), вам просто нужно зарегистрировать их в асинхронном режиме.Тогда события обработчика событий будут выполняться в своих собственных потоках, а не блокироваться.

Остерегайтесь состояния гонки между вашим обработчиком событий и отображением формы редактирования (т. Е. Ваш обработчик событий обновляет ваш элемент после отображения формы редактирования).

SPEventReceiverDefinition eventReceiver = eventReceivers.Add();
eventReceiver.Name = receiverName;
eventReceiver.Synchronization = SPEventReceiverSynchronization.Asynchronous; 
eventReceiver.Type = SPEventReceiverType.ItemAdded;
eventReceiver.SequenceNumber = sequenceNumber; 
eventReceiver.Assembly = assemblyFullName ;
eventReceiver.Class = assemblyClassName ;
eventReceiver.Data = receiverData ;

eventReceiver.Update();

http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.speventreceiverdefinition.synchronization.aspx

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