Stworzyłem bibliotekę klas, która wykonuje geoprzetwarzanie. Dodatek wywołuje klasę, która jest procesem asynchronicznym. Upewniłem się, że wątek jest STA, a obiekty Arc są bezpieczne dla wątków (tzn. Nie zostały przekazane z dodatku). Wszystkie obiekty łukowe są tworzone w wątku.
Ponieważ jest to biblioteka klas, zawarłem ją w interfejsie użytkownika winforms, a także jako dodatek. Oba zestawy kodu są dokładnie takie same, a test został przeprowadzony przy użyciu dokładnie tych samych danych. Zarówno winforms, jak i addin uzupełniają kod z pożądanymi wynikami i nie są widoczne żadne wycieki pamięci. W przypadku dodatku nie ma w tym momencie interakcji z okresem mapy i nie ma elementów mapowania ani wyświetlania w kodzie winforms.
jedynymi aktualizacjami interfejsu użytkownika są aktualizacja okna dialogowego postępu zarówno w dodatku, jak i interfejsie użytkownika. Dodatek korzysta z dokowalnego okna (interfejs użytkownika).
Problem, który widzę, polega na tym, że biblioteka jest wywoływana z dodatku, wykonywanie kodu jest 5 razy wolniejsze niż ten sam kod wywoływany przez aplikację winforms.
Wszelkie pomysły na to, gdzie mogę sprawdzić, dlaczego tak się dzieje?
Activator.CreateInstance
czy z new
?