Я створив бібліотеку класів, яка займається деякою геопроцесорною обробкою. Аддін називає клас, який є асинхронним процесом. Я переконався, що нитка є STA, а аркобекти безпечні для потоку (тобто не передаються з аддіна). Усі аркобекти створюються в потоці.
Оскільки це бібліотека класів, я загорнув її в інтерфейс winforms, а також як доповнення. Обидва набори коду точно однакові, і тест проводили за допомогою однакових даних. Як форми winin, так і addin заповнюють код бажаними результатами, і ніяких витоків пам'яті не видно. У випадку з аддіном в цій точці немає взаємодії з періодом карти і в коді winforms немає елементів відображення або відображення.
Єдиними оновленнями інтерфейсу є оновлення діалогу прогресу як в додатку, так і в інтерфейсі. Додаток використовує док-вальне вікно (ui управління користувачем).
Проблема, яку я бачу, - це коли виклик бібліотеки з додатку, виконання коду на 5 разів повільніше, ніж той самий код, який викликається програмою winforms.
Будь-які ідеї щодо того, куди я можу шукати, щоб зрозуміти, чому це відбувається?
Activator.CreateInstance
або з допомогою new
?