Benjamins Blog

Benjamin Wegner über Weisheiten, SharePoint und IT Zeugs

Benjamins Blog header image 2

Eventreceiver deaktivieren

Dezember 18th, 2008 ·

Bei einem Massenupload kann es nötig sein, den Eventreceiver einer Liste zu deaktivieren. Damit entgeht man konkurrierenden Zugriffen und ggf. wird die Performance positiv beeinflusst.


 


Zum Deaktivieren:


   1:  List<SPEventReceiverDefinition> eventRevc = new List<SPEventReceiverDefinition>();
   2:  SPEventReceiverDefinitionCollection currentRcv = lib.EventReceivers;
   3:  foreach (SPEventReceiverDefinition rcv in currentRcv)
   4:  {
   5:             eventRevc.Add(rcv);
   6:             lib.EventReceivers[rcv.Id].Delete();
   7:  }




 


Dann die gewünschte Massenaktion durchführen und die Receiver wieder aktivieren:


   1:  foreach (SPEventReceiverDefinition rcv in eventRevc)
   2:  {
   3:       lib.EventReceivers.Add(rcv.Type, rcv.Assembly, rcv.Class);
   4:  }
 

Zu beachten ist, dass das Deaktivieren und Aktivieren einige Performance frisst. Man sollte sich also sehr bewusst sein, wann man dies so einsetzt!


UPDATE:


Die Aktion, die zwischen Deaktivieren und Aktivieren ausgeführt wird, sollte unbedingt in in try catch block – das Aktivieren folglich in den finally Block. Dadurch wird erreicht, dass die Eventhandler auch im Fehlerfall wieder hinzugefügt werden.

Tags: Allgemein