У меня есть своего рода модель подключаемого модуля, в которой различные сложные пользовательские элементы управления хранятся в DLL-библиотеках, загружаются и создаются во время выполнения с использованием
Activator.CreateInstanceFrom(dllpath, classname).
Так как я загружаю довольно много из них, я хотел сделать это в фоновом режиме, поддерживая отзывчивость моего интерфейса, создав новый поток для загрузки. Затем элементы управления переносятся в основную форму и отображаются при необходимости.
Кажется, это работает нормально - пока я не попытаюсь установить какое-либо свойство для любого вложенного элемента управления на одном из этих пользовательских элементов управления, например, в обработчике события кнопки, которая выдает исключение перекрестной потоковой обработки. Я понимаю, что мог бы избежать этого, проверяя InvokeRequired каждый раз, когда я получаю доступ к свойству, но я бы предпочел не беспокоиться об этом при написании кода для пользовательских элементов управления (особенно, поскольку есть и другие, которые пишут эти фрагменты кода, которые могут не всегда помню).
Итак, мой вопрос, есть ли какой-нибудь безопасный способ сделать то, что я пытаюсь, или как мне лучше всего загружать эти элементы управления в фоновом режиме? Или это в принципе невозможно, и мне нужно придерживаться основного потока для создания элементов управления?
Я надеюсь, что предоставленной мной информации достаточно, чтобы прояснить мою ситуацию; в противном случае я был бы рад разработать и предоставить примеры кода.