У меня есть основной поток пользовательского интерфейса, который запускает приложение и создает форму главного окна (назовем его W
). У меня также есть дополнительный поток, который я раскручиваю и который создает диалоговое окно (назовем его B
).
Я хочу установить владельца диалогового окна B
в качестве главного окна W
. Настройка владельца B
происходит в потоке, который создал B
. В основном:
b.Owner = w;
но это выдает исключение между потоками, сообщающее мне, что я пытаюсь получить доступ к объекту W
из другого потока.
Поэтому я попытался выполнить код в основном потоке пользовательского интерфейса, используя Control.Invoke
в W
. Но затем я получаю ту же ошибку, сообщающую, что пытаюсь получить доступ к B
из неправильного потока:
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
Как я должен сделать это правильно?