I tienen una especie de modelo de plug-in en el que los diversos controles de usuario complejas se almacenan en archivos DLL y cargado y instanciados en tiempo de ejecución utilizandocontroles creando en un no-UI hilo
Activator.CreateInstanceFrom(dllpath, classname).
Desde que estoy loading bastantes de estos quería hacerlo en segundo plano, manteniendo mi IU sensible, creando un nuevo hilo para hacer la carga. Los controles se emparejan al formulario principal y se muestran cuando es necesario.
Parece que funciona bien, hasta que intento establecer cualquier propiedad en cualquier control anidado en uno de estos controles de usuario, p. Ej. en el controlador de eventos de un botón, que arroja una excepción de cruce cruzado. Me doy cuenta de que puedo evitar esto marcando InvokeRequired cada vez que accedo a una propiedad, pero prefiero no tener que preocuparme por eso al escribir el código para los controles de usuario (especialmente porque hay otros que también escriben estos bits de código que podrían no siempre recordar).
Así que mi pregunta es, ¿hay alguna manera segura de hacer lo que estoy intentando, o cómo debo cargar estos controles en segundo plano? ¿O es básicamente imposible y tengo que seguir el hilo principal para crear controles?
Espero que la información que he proporcionado sea suficiente para aclarar mi situación; si no, me complacería elaborar y proporcionar ejemplos de código.
"hasta que intento establecer cualquier propiedad": ¿está en el hilo o más adelante? –
Eso es más tarde, después de que el control de usuario ha sido emparentado con el formulario principal (como en form.controls.add (mycontrol)) –