J'ai créé une bibliothèque de classes qui fait du géotraitement. L'addin appelle une classe qui est un processus asynchrone. Je me suis assuré que le thread est STA et que les arcobjects sont thread-safe (c'est-à-dire non transmis depuis l'addin). Tous les arcobjects sont créés dans le fil.
Parce que c'est une bibliothèque de classes, je l'ai enveloppée dans une interface utilisateur winforms et également en tant que complément. Les deux ensembles de codes sont exactement les mêmes et les tests ont été effectués en utilisant exactement les mêmes données. Les winforms et le complément complètent le code avec les résultats souhaités et aucune fuite de mémoire n'est évidente. Pour le cas de l'addin, il n'y a pas d'interaction avec la période de carte à ce stade et il n'y a pas non plus d'éléments de mappage ou d'affichage dans le code winforms.
les seules mises à jour de l'interface utilisateur sont la mise à jour d'une boîte de dialogue de progression dans le complément et l'interface utilisateur. L'addin utilise une fenêtre ancrable (contrôle utilisateur ui).
Le problème que je vois est lorsque la bibliothèque est appelée à partir du complément, l'exécution du code est 5 fois plus lente que le même code appelé via l'application winforms.
Des idées sur où je pourrais chercher pour voir pourquoi cela se produit?
Activator.CreateInstance
ou avec new
?