Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > Parent для формы в потоке


Автор: puZzo 16.8.2012, 09:40
День и вечер добрый:)

Появилась такая проблеммка, нужно показать окошко (Proccess indikator) над основной формой, пока там что-то считается.
в силу специфики и реализации задачи, рассчеты идут в основном потоке, для окошка вызываю отдельный поток, в котором создаю форму лоадинга, но при попытке показать е методом ShowDialog() ессно она не становится диалоговой, т.к. запускается из фиг знает какого потока.
попытка дать полю Parent основную форму не увенчалась успехом, ругается чего-то там.
пытался натравить хндл основной формы, тогда моя процесс-форма неактивна вообще, даже закрыть не получается..

короч, извращался я как мог, никто не желает помочь? smile
Жду с нетерпением комментариев:)

Автор: infarch 17.8.2012, 22:14
Не думаю что специфика задачи требует работать с формами через ж... левые потоки тоесть. Думаю стоит начать с создания нормальной архитектуры, далее все будет гораздо проще. Пусть основная форма в своем потоке запускает диалоговую, та порождает поток и им манипулирует.

Автор: puZzo 20.8.2012, 07:47
Цитата(infarch @  17.8.2012,  22:14 Найти цитируемый пост)
Не думаю что специфика задачи требует работать с формами через ж... левые потоки тоесть.

Не хочу никого оскорблять, но я же ясно написал, есть задача, по другому не нужно, причины есть, всегда бесили "всезнайки", которые не знают ответа на вопрос и лезут с улучшизмами!
Прошу прощения если все-таки оскорбил, я пытался по мягче:)

Дело в том, что есть комплекс вычислений, достаточно громоздкий и расползшийся по структуре программы. Необходимо реализовать бегунок, не более того, все остальное устраивает. Тратить время (а это не одна неделя) на переписывание логики я не вижу смысла. А почему и зачем так было сделано изначально - это уже совсем другой и бесполезный вопрос.

Автор: infarch 20.8.2012, 21:24
Отчего же не знаю? Знаю, и это как раз то что я написал. Не хотите рефакторить - дело ваше. Кстати, кто вам мешает кинуть на форму прогрессбар, а вычисления вызвать из бекграундворкера? А форму задизейблить?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)