我正在開發一個SharePoint 2010集成,它具有SPItemEventReceiver,用於處理文檔庫列表的ItemAdded和ItemUpdated事件。我添加了一個構造函數來處理事件接收器的一些初始化。在測試/調試中,我注意到當我的功能被激活時(包含這個事件接收器的功能),我的事件接收器被初始化了12次。我一直在試圖弄清楚爲什麼構造函數被調用了12次,並且想知道是否所有12個實例都會一直存在,直到該功能被禁用,或者我需要小心,因爲其中一些可能會被垃圾收集在路上。任何人都知道爲什麼有12個,他們的一生是什麼?SharePoint 2010 - SPItemEventReceiver初始化了12次
回答
我不會說幻數12是相關的;它只是爲你量身定做。無論如何,SharePoint事件接收器不應該依賴於單例語義。最重要的是,對於每一個獨特的事件,你可以肯定,只有這些事件接收器中的一個將處理該事件,除非你不小心添加12相同的列表;-)
-Oisin
滴速12個文件起訴探險家的觀點會造成這樣的影響。
這將導致12個添加事件觸發,但我所看到的是12個事件接收器的構造函數調用,即使對於每個文件丟失只有1個事件處理程序被調用。 – pstrjds 2010-08-11 12:42:12
確保刪除功能停用時的事件接收器。這在開發環境中發生了很多,因爲許多人在功能激活中創建激活的代碼,但不是停用代碼,最終在列表中包含一堆接收器等。
問題在於啓動時接收器的構造函數調用次數,而不是真正的孤立接收器。這是一個很好的實踐概念,因爲在停用時刪除自己是很好的選擇,但停用與這個問題無關。 – pstrjds 2012-01-31 14:37:13
您也可以嘗試創建靜態成員在課堂上,這應該得到一些你以後的東西。你不得不去測試它,但我不能保證它會起作用。
歡迎使用stackoverflow!如果可能的話,最好爲您的問題提供示例代碼,以提高發布後的準確性並獲得更好的結果。祝你有美好的一天 :) – 2012-10-27 00:30:28
- 1. 我初始化了兩次嗎?
- 2. Directx11 SDK June 2010(2010)VC++ 2010初始化
- 3. SharePoint SPItemEventReceiver環境配置
- 4. Sharepoint 2010中的Silverlight Webpart自定義初始化參數
- 5. SharePoint 2010的事件監聽器 - SPItemEventReceiver與多線程
- 6. TimerService EJB初始化多次
- 7. 一次Hook DLL初始化
- 8. 初始化次(例如mapkit)
- 9. 只初始化一次
- 10. 瞭解Python類初始化
- 11. 誰初始化了閃存?
- 12. 瞭解jQuery的初始化
- 13. 瞭解初始化過程
- 14. sharepoint Javascript集合尚未初始化
- 15. Sharepoint 2010 JSOM getEnumerator'集合尚未初始化。它沒有被要求......'
- 16. 角度控制器在初始化時調用了10次
- 17. 爲什麼我的spring上下文初始化了兩次?
- 18. 用數組或初始化初始化一個NSMutableArray初始化
- 19. 初始化,初始化與參數和便利初始化
- 20. java中的初始化初始化
- 21. 初始化在初始化列表
- 22. 直接初始化與值初始化
- 23. 初始化含有初始化列表
- 24. 值初始化vs集合初始化
- 25. C++ - 初始化與骨料初始化
- 26. 初始化內置類型初始化
- 27. 初始化數組時初始化System.AccessViolationException
- 28. Spring初始化bean初始化
- 29. 初始化UITableViewCell初始化問題initwithStyle
- 30. 陣列初始化
因此,這可能是相同的,即使我將其添加到以編程方式激活的功能中,而不是允許「wsp」打包來處理部署。有什麼辦法可以爲事件接收器獲得「單例」初始化語義。我的目標是在另一個線程中設置一些文件夾。 – pstrjds 2010-08-10 20:50:17
我想我應該問的另一個問題是,你提到「SharePoint事件接收器不應該依賴於單例語義」是否有一些文檔沿着這些線?我不懷疑它,我是SharePoint和Web風格開發的新手,我已經做了幾年的桌面C++/COM/C#開發。 – pstrjds 2010-08-10 20:52:15
對於事件接收器,沒有關於該特定點的任何文檔,但是您有更多的Web開發,您會意識到它適用於所有事情。 HTTP是無狀態的,無論ASP.NET如何使用視圖狀態來讓你以其他方式進行思考。試圖假設在任何時候只有一個人會執行你的aspx頁面是一個很好的模擬。網絡全都是平行的,並且深入到堆棧中。 – x0n 2010-08-11 20:27:11