C# 我是否应该为每个地理处理工具创建一个新的地理处理器对象?

C# 我是否应该为每个地理处理工具创建一个新的地理处理器对象?,c#,arcobjects,C#,Arcobjects,常见情况:我使用C#开发了一个ArcMap扩展。大多数问题都可以通过使用ArcToolbox中的各种地理处理工具来解决。通常更可取的做法是: 为每个工具创建新的地理处理器对象 是否重新使用单个地理处理器对象 当建议使用1)时,是否必须在执行单个工具后释放com对象?调用GC.Collect()怎么样 当推荐使用2)时,一次实例化它并反复重用它(例如使用singleton模式)是一种好方法吗 我个人的经验是,使用第二种方法时,我在调试代码时遇到了严重的内存访问冲突。我可能会选择为每种方法创建一个新

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

  • 为每个工具创建新的地理处理器对象
  • 是否重新使用单个地理处理器对象
  • 当建议使用1)时,是否必须在执行单个工具后释放com对象?调用GC.Collect()怎么样

    当推荐使用2)时,一次实例化它并反复重用它(例如使用singleton模式)是一种好方法吗


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

    我可能会选择为每种方法创建一个新对象。如果您使用多个线程,那么无论如何都有必要避免同步

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

    请看这里: