假設你正在使用的「後」事件(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
有在SharePoint的級別沒有限制,假設你沒有運行的沙盒解決方案。你能發佈代碼嗎? – 2011-04-17 16:27:47
我不認爲這是必要的,因爲每個事件接收器是由發起事件的請求異步運行。基本上,我相信他們已經是後臺線程。換句話說,在事件接收者中長時間處理,我不認爲會阻止下一個射擊。 – Jason 2011-04-18 12:52:07