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 oWbjeto 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?

questionAnswers(3)

yourAnswerToTheQuestion