Я создал библиотеку классов, которая выполняет некоторую геообработку. Надстройка вызывает класс, который является асинхронным процессом. Я убедился, что поток является STA, а объекты arcobject являются потокобезопасными (то есть не передаются из надстройки). Все arcobjects создаются в потоке.
Поскольку это библиотека классов, я обернул ее в пользовательский интерфейс winforms, а также в качестве надстройки. Оба набора кода абсолютно одинаковы, и тестирование проводилось с использованием одинаковых данных. И winforms, и addin дополняют код желаемыми результатами, и никаких утечек памяти не видно. Для случая надстройки в этот момент нет взаимодействия с периодом карты, и в коде winforms также нет элементов отображения или отображения.
единственные обновления пользовательского интерфейса - это обновление диалогового окна прогресса как в надстройке, так и в пользовательском интерфейсе. Надстройка использует закрепляемое окно (пользовательский интерфейс управления).
Проблема, которую я вижу, заключается в том, что когда библиотека вызывается из надстройки, выполнение кода происходит в 5 раз медленнее, чем тот же код, вызываемый из приложения winforms.
Любые идеи о том, где я мог бы посмотреть, почему это происходит?
Activator.CreateInstance
, или с new
?