2010-06-28 71 views
0

常見故事:我使用C#開發ArcMap擴展。大多數問題都可以通過使用ArcToolbox的各種地理處理工具來解決。通常更合適的是:我應該爲每個地理處理工具創建一個新的地理處理器對象嗎?

  1. 爲每個工具創建一個新的地理處理器對象?
  2. 重新使用一個地理處理器對象?

當建議1)時,是否必須在單個工具執行後釋放COM對象?關於調用GC.Collect()怎麼樣?

當2)被推薦時,它是一個很好的方法來實例化一次並重復使用它,例如使用單例模式?

我個人的經驗是,使用第二種方法時,我在調試代碼時遇到嚴重的內存訪問衝突。

回答

1

我可能會選擇爲每個對象創建一個新的對象。如果您使用多個線程,則無論如何都需要避免同步。

是的,你需要儘快釋放每個COM對象,但不要調用GC.Collect()。

請看這裏:http://msdn.microsoft.com/en-us/library/ff647812.aspx