He creado una biblioteca de clases que hace un poco de geoprocesamiento. El complemento llama a una clase que es un proceso asíncrono. Me he asegurado de que el hilo sea STA y los arcobjects sean seguros para el hilo (es decir, no pasaron del complemento). Todos los arcobjects se crean dentro del hilo.
Debido a que esta es una biblioteca de clase, la envolví en una interfaz de usuario winforms y también como un complemento. Ambos conjuntos de código son exactamente iguales y la prueba se realizó utilizando exactamente los mismos datos. Tanto el winforms como el complemento completan el código con los resultados deseados y no hay pérdidas de memoria evidentes. Para el caso del complemento no hay interacción con el período del mapa en este punto y tampoco hay elementos de mapeo o visualización en el código winforms.
Las únicas actualizaciones de la interfaz de usuario son la actualización de un cuadro de diálogo de progreso tanto en el complemento como en la interfaz de usuario. El complemento está utilizando una ventana acoplable (ui de control de usuario).
El problema que veo es cuando se llama a la biblioteca desde el complemento, la ejecución del código es 5 veces más lenta que el mismo código llamado a través de la aplicación winforms.
¿Alguna idea sobre dónde podría mirar para ver por qué ocurre esto?
Activator.CreateInstance
o con new
?