Excepción de hilos cruzados al configurar el propietario de WinForms.Form: ¿cómo hacerlo correctamente?
Tengo un subproceso de interfaz de usuario principal que ejecuta la aplicación y crea el formulario de ventana principal (llamémosloW
). También tengo un hilo secundario que giro y que crea un cuadro de diálogo (llamémosloB
).
Quiero establecer el propietario del diálogoB
para ser la ventana principalW
. La configuración deB
l propietario de @s sucede en el hilo que creóB
. Básicamente
b.Owner = w;
pero esto arroja una excepción entre hilos que me dice que estoy intentando acceder a laW
objeto del hilo equivocado.
Así que intenté ejecutar el código en el hilo principal de la interfaz de usuario, usando unControl.Invoke
enW
. Pero luego, aparece el mismo error que me dice que estoy intentando acceder aB
del hilo equivocado:
System.InvalidOperationException was unhandled by user code
Message=Cross-thread operation not valid: Control 'B' accessed from a
thread other than the thread it was created on.
Source=System.Windows.Forms
¿Cómo se supone que debo hacerlo bien?