Exceção de thread cruzado ao definir o proprietário do WinForms.Form - como fazer isso certo?
Eu tenho um thread principal da interface do usuário que executa o aplicativo e cria o formulário da janela principal (vamos chamá-loW
). Eu também tenho um thread secundário que eu giro e que cria uma caixa de diálogo (vamos chamá-loB
).
Quero definir o proprietário da caixa de diálogoB
para ser a janela principalW
. A configuração deB
proprietário de @s acontece no encadeamento que criouB
. Basicamente
b.Owner = w;
, mas isso gera uma exceção entre linhas, dizendo que estou tentando acessar oW
bjeto do segmento errad
ntão tentei executar o código no thread principal da interface do usuário, usando umControl.Invoke
emW
. Mas, então, recebo o mesmo erro dizendo que estou tentando acessarB
da linha errada:
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
Como devo fazer isso certo?