我碰到這個post想出了一個很好的解決方案,以防止事件接收器上的SPListItem擊發事件接收器外執行更新時的問題。代碼的工作原理是100%,我對這個解決方案印象深刻,問題是我沒有完全理解它。擴展方法
爲了簡單起見,讓忽略SystemUpdate方法,所以我們只處理了SPListItem.Update過載,並在代碼中聲明的私有類。
位我沒有「得到」是怎麼類Rh爲「鏈接」或「關聯」與SPListItem項目。再現方法來保存單擊後退......
public static void Update(this SPListItem item, bool doNotFireEvents)
{
SPItemEventReceiverHandling rh = new SPItemEventReceiverHandling();
if (doNotFireEvents)
{
try
{
rh.DisableEventFiring();
item.Update();
}
finally
{
rh.EnableEventFiring();
}
}
else
{
item.Update();
}
}
我可以看到我們實例SPItemEventReceiverHandling的一個實例,RH,如果doNotFireEvents是真的,我們呼籲RH然後DisableEventFiring()完成時,我們稱之爲EnableEventFiring()在rh上。我看不到的鏈接是在「rh」和「item」之間。在進行更新時,SharePoint如何「知道」將rh用作事件接收器?
我希望我已經說清楚的解釋。如果不讓我知道,我會嘗試進一步澄清。
嗯文檔不明確。所以當你說全部我們在說什麼範圍?這是用戶的所有事件嗎?線? Web應用程序?或者大家都農場?擔心的是,如果它對每個人來說都是農場範圍,那麼如果其他人做了更新,我希望事件接收器在短時間內禁用事件時觸發更新? – Mark 2011-04-08 08:23:21