Ich habe eine Klassenbibliothek erstellt, die Geoverarbeitung durchführt. Das Add-In ruft eine Klasse auf, die ein asynchroner Prozess ist. Ich habe sichergestellt, dass der Thread STA ist und die ArcObjects threadsicher sind (dh nicht vom Addin übergeben werden). Alle Bogenobjekte werden innerhalb des Threads erstellt.
Da dies eine Klassenbibliothek ist, habe ich sie in eine Winforms-Benutzeroberfläche und auch als Add-In eingebunden. Beide Codesätze sind genau gleich und der Test wurde mit genau den gleichen Daten durchgeführt. Sowohl die Winforms als auch das Add-In vervollständigen den Code mit den gewünschten Ergebnissen, und es sind keine Speicherlecks erkennbar. Für den Fall des Add-Ins gibt es zu diesem Zeitpunkt keine Interaktion mit dem Map-Zeitraum und es gibt auch keine Mapping- oder Anzeigeelemente im Winforms-Code.
Die einzigen UI-Updates sind die Updates eines Fortschrittsdialogs sowohl im Add-In als auch in der UI. Das Add-In verwendet ein andockbares Fenster (Benutzersteuerungs-Benutzeroberfläche).
Das Problem, das ich sehe, ist, wenn die Bibliothek vom Add-In aufgerufen wird, die Codeausführung 5x langsamer ist als der gleiche Code, der über die Winforms-Anwendung aufgerufen wird.
Irgendwelche Ideen, wo ich nachsehen könnte, warum dies geschieht?
Activator.CreateInstance
oder mit new
?