Должен ли я создать новый объект геопроцессора для каждого инструмента геообработки? - PullRequest
0 голосов
/ 28 июня 2010

Общая история: я разрабатываю расширение ArcMap с использованием C #.Большинство проблем можно решить с помощью всевозможных инструментов геообработки из ArcToolbox.Что обычно более целесообразно:

  1. Создание нового объекта геопроцессора для каждого инструмента?
  2. Повторное использование одного объекта геопроцессора?

Когда 1)рекомендуется ли мне освобождать объект com после того, как один инструмент был выполнен?Как насчет вызова GC.Collect ()?

Когда рекомендуется 2), является ли хорошим методом один раз создать его экземпляр и использовать его снова и снова, например, с помощью шаблона singleton?

Мой личный опыт показывает, что, используя второй метод, я сталкиваюсь с серьезными нарушениями доступа к памяти при отладке своего кода.

1 Ответ

1 голос
/ 28 июня 2010

Я бы, вероятно, решил создать новый объект для каждого.Если вы используете несколько потоков, в любом случае это необходимо, чтобы избежать необходимости в синхронизации.

И да, вам нужно как можно скорее освободить каждый com-объект, но не вызывайте GC.Collect ().

Смотрите здесь: http://msdn.microsoft.com/en-us/library/ff647812.aspx

...