C # Форма формы находится в отдельном потоке - PullRequest
1 голос
/ 02 января 2011

У меня странная проблема.

У меня есть 3 формы.form1, form2, form3.

form1 является начальной / основной формой.в form1 у меня есть код:

form2 f2 = new form2;
f2.ShowDialog();

открывается form2, я не могу сосредоточиться на foorm1, они оба находятся в одном потоке.Как раз то, что я хочу.

В форме 2 у меня есть код:

form3 f3 = new form3;
DialogResult result = f3.ShowDialog();

Я запускаю этот код и ... По какой-то неизвестной для меня причине эта форма 3 запускается в новом потоке, и я могусосредоточиться на форме2.Я не хочу, чтобы это случилось.Я понятия не имею, почему эта форма 3 работает в новом потоке.Я не могу использовать DialogResult, потому что это приводит к ошибке (Cross-thread).

Он ведет себя так, как если бы я использовал f3.Show (), но я использую f3.ShowDialog ();

Заранее.

PS

Если я использую

form3 f3 = new form3;
DialogResult result = f3.ShowDialog(this);

, я получил это:

System.InvalidOperationException не обрабатываетсяпо коду пользователя
Сообщение = Межпотоковая операция недопустима: элемент управления 'form2' доступен из потока, отличного от потока, в котором он был создан.

в этой строке:

DialogResult result = f3.ShowDialog(this);

1 Ответ

3 голосов
/ 02 января 2011

Функция диалогов, реализуя свой собственный цикл сообщений.Поскольку оба потока имеют цикл обработки сообщений, у вас включены два диалоговых окна.Либо вручную отключите первый диалог, либо создайте и покажите все диалоги из одного потока. Я настоятельно рекомендую вам сделать весь пользовательский интерфейс одним потоком. Пожалуйста, ознакомьтесь с членами InvokeRequired и Invoke в Control.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...