Tôi có một loại mô hình plug-in, trong đó người dùng điều khiển phức tạp khác nhau được lưu trữ trong file DLL và nạp và khởi tạo lúc thực thi bằngTạo điều khiển trong một tổ chức phi thread UI
Activator.CreateInstanceFrom(dllpath, classname).
Kể từ khi tôi tải khá một vài trong số này tôi muốn làm điều đó trong nền, giữ giao diện người dùng của tôi đáp ứng, bằng cách tạo ra một chủ đề mới để làm việc tải. Các điều khiển sau đó được parented vào hình thức chính và hiển thị khi cần thiết.
Điều này có vẻ hoạt động tốt - cho đến khi tôi cố gắng đặt bất kỳ thuộc tính nào trên bất kỳ kiểm soát lồng nhau nào trên một trong các điều khiển người dùng này, ví dụ: trong xử lý sự kiện của một nút, trong đó ném một ngoại lệ luồng chéo. Tôi nhận ra rằng tôi có thể tránh điều này bằng cách kiểm tra InvokeRequired mỗi khi tôi truy cập một thuộc tính, nhưng tôi không phải lo lắng về điều đó khi viết mã cho các điều khiển người dùng (đặc biệt là vì có những người khác viết các mã này không phải lúc nào cũng nhớ).
Vì vậy, câu hỏi của tôi là, có cách nào an toàn để làm những gì tôi đang cố gắng hay không hoặc làm cách nào tốt nhất tôi nên tải các điều khiển này xuống dưới nền? Hoặc là nó về cơ bản không thể và tôi có phải dính vào thread chính để tạo điều khiển?
Tôi hy vọng rằng thông tin tôi đã cung cấp đủ để làm cho tình hình của tôi rõ ràng; nếu không, tôi sẽ rất vui khi xây dựng và cung cấp các mẫu mã.
"cho đến khi tôi cố gắng đặt bất kỳ thuộc tính nào" - đó là trong Chủ đề hay sau này? –
Đó là sau, sau khi kiểm soát người dùng đã được parented để hình thức chính (như trong form.controls.add (mycontrol)) –