У меня возник тут вопрос, помогите пожалуйста, быть может его где-то и рассматривали, но после поверхностного поиска по форуму я не нашел ответа.
Так вот:
Значит, есть одна форма ее поддерживает один поток, так вот мне надо открыть вторую форму но уже в другом потоке. Короче чтобы у двух форм были разные потоки. Такой вот код не помогает:
private void button1_Click(object sender, System.EventArgs e)
{
t = new Thread(new ThreadStart(OpenForm2));
t.Start();
}
private void OpenForm2()
{
Form2 f2 = new Form2();
f2.Show();
}
а происходит следующее: мой поток t выполнив процедуру OpenForm2 и не собирается дальше следить за формой второй, а берет и убивается. Так что форма вторая тоже за ним закрывается. Так вот как определить для второй формы ее UI поток?
Данное сообщение является художественным произведением и освещает вымышленные события в вымышленном мире. Все совпадения с реальностью являются случайными. Не является инвестиционной рекомендацией.
Здравствуйте, syrompe, Вы писали:
S>вообщето f2.show() как раз таки и создает отдельный поток для формы (этим и отличается от showdialog)
О! А вот где бы прочитать про такие подробности?
Slicer
Специалист — это варвар, невежество которого не всесторонне :)
S>вообщето f2.show() как раз таки и создает отдельный поток для формы (этим и отличается от showdialog). так что можно все это дело короче записатьЧТН> S>
Не, я тут проверял, если просто Show(), то тогда как раз остается тот же UI поток, так как можно первой форме дать что-нибудь посчитать, ну допустим даже можно бесконечный цикл запустить, так вот второе окно тоже не будет откликаться. А когда создаешь в новом потоке новую форму с помощью ShowDialog() все хорошо получается.
Re[2]: Разные формы в разных потоках
От:
Аноним
Дата:
14.10.05 15:45
Оценка:
>А когда создаешь в новом потоке новую форму с помощью ShowDialog() все хорошо получается.
Просто ShowDialog запускает свой цикл выборки сообщений из потока. А с использованием Show цикл нужно запускать явно (как Вам уже показали при помощи Application.Run)