Ho creato una biblioteca di classe che esegue alcuni geoprocessing. Il componente aggiuntivo chiama una classe che è un processo asincrono. Ho assicurato che il thread è STA e gli oggetti arco sono thread-safe (cioè non passati dall'addin). Tutti gli oggetti arco vengono creati all'interno del thread.
Poiché questa è una libreria di classi, l'ho racchiusa in un'interfaccia utente di winforms e anche come componente aggiuntivo. Entrambi gli insiemi di codice sono esattamente gli stessi e il test è stato eseguito utilizzando esattamente gli stessi dati. Sia le winform che l'aggiunta completano il codice con i risultati desiderati e non sono evidenti perdite di memoria. Per il caso del componente aggiuntivo non vi è alcuna interazione con il periodo della mappa a questo punto e non ci sono neppure elementi di mappatura o di visualizzazione nel codice winforms.
gli unici aggiornamenti dell'interfaccia utente sono l'aggiornamento di una finestra di dialogo di avanzamento sia nel componente aggiuntivo che nell'interfaccia utente. Il componente aggiuntivo utilizza una finestra agganciabile (interfaccia utente controllo utente).
Il problema che sto vedendo è quando la libreria viene chiamata dal componente aggiuntivo, l'esecuzione del codice è 5 volte più lenta dello stesso codice chiamato tramite l'applicazione winforms.
Qualche idea su dove potrei guardare per vedere perché questo sta accadendo?
Activator.CreateInstance
o con new
?