0

常见故事:我使用 C# 开发了一个 ArcMap 扩展。大多数问题都可以通过使用 ArcToolbox 中的各种地理处理工具来解决。通常更可取的是:

  1. 为每个工具创建一个新的地理处理器对象?
  2. 重复使用一个地理处理器对象?

推荐 1) 时,是否必须在执行单个工具后释放 com 对象?调用 GC.Collect() 怎么样?

当推荐 2) 时,将其实例化一次并一遍又一遍地重用它是否是一种好方法,例如使用单例模式?

我个人的经验是,使用第二种方法时,我在调试代码时遇到了严重的内存访问冲突。

4

1 回答 1

1

我可能会选择为每个对象创建一个新对象。如果您使用多个线程,则无论如何都需要避免同步。

是的,您需要尽快释放每个 com 对象,但不要调用 GC.Collect()。

见这里:http: //msdn.microsoft.com/en-us/library/ff647812.aspx

于 2010-06-28T15:08:18.513 回答