Tôi đã tạo một thư viện lớp thực hiện một số công cụ địa lý. Addin gọi một lớp là một quá trình không đồng bộ. Tôi đã đảm bảo luồng là STA và các arcobject là luồng an toàn (nghĩa là không được truyền từ addin). Tất cả các arcobject được tạo trong chuỗi.
Bởi vì đây là một thư viện lớp, tôi đã gói nó trong một giao diện người dùng winforms và cũng như một addin. Cả hai bộ mã này hoàn toàn giống nhau và thử nghiệm được thực hiện bằng cách sử dụng cùng một dữ liệu. Cả winforms và addin đều hoàn thành mã với kết quả mong muốn và không có rò rỉ bộ nhớ nào. Đối với trường hợp của addin, không có tương tác với thời kỳ bản đồ tại thời điểm này và cũng không có thành phần ánh xạ hoặc hiển thị trong mã winforms.
các bản cập nhật UI duy nhất là bản cập nhật của hộp thoại tiến trình trong cả addin và UI. Addin đang sử dụng một cửa sổ có thể gắn được (điều khiển người dùng ui).
Vấn đề tôi gặp là khi thư viện được gọi từ addin, việc thực thi mã chậm hơn 5x so với cùng mã được gọi thông qua ứng dụng winforms.
Bất kỳ ý tưởng về nơi tôi có thể nhìn để xem tại sao điều này xảy ra?
Activator.CreateInstance
, hoặc với new
?