у меня есть своего рода вставной модели, в которой различные сложные пользовательские элементы управления хранятся в DLL, и загружен и инстанцированный во время выполнения с помощьюСоздание элементов управления в не-UI нить
Activator.CreateInstanceFrom(dllpath, classname).
Так как я загрузки довольно многие из них я хотел сделать это в фоновом режиме, сохраняя свой пользовательский интерфейс, создавая новый поток для загрузки. Элементы управления затем ориентируются на основную форму и отображаются, когда это необходимо.
Это, кажется, работает нормально - пока я не попытаюсь установить какое-либо свойство на любом вложенном элементе управления на одном из этих элементов управления пользователя, например. в обработчике событий кнопки, которая генерирует исключение перекрестной резьбы. Я понимаю, что могу избежать этого, проверяя InvokeRequired каждый раз, когда я обращаюсь к свойству, но я бы предпочёл не беспокоиться об этом при написании кода для пользовательских элементов управления (тем более, что есть другие, которые пишут эти биты кода, которые могут не всегда помню).
Итак, мой вопрос: существует ли какой-либо безопасный способ делать то, что я пытаюсь, или как лучше всего загружать эти элементы управления в фоновом режиме? Или это в принципе невозможно, и я должен придерживаться основного потока для создания элементов управления?
Надеюсь, что предоставленная мной информация достаточна, чтобы моя ситуация была ясной; если бы я не был рад разработать и представить образцы кода.
«пока я не попытаюсь установить какое-либо свойство» - это в теме или позже? –
Это позже, после того, как пользовательский элемент управления был включен в основную форму (как в form.controls.add (mycontrol)) –