Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.216.94.152] |
|
Сообщ.
#1
,
|
|
|
у меня первичный поток вызывает метод, который может выполняться 5-10 сек.
Чтоб user не нервничал нужно как-то отобразить диалог состояния. Но первичный поток ждет и ничего отрисовывать не будет. Как это можно сделать ? |
Сообщ.
#2
,
|
|
|
ну стало быть создать второй поток
|
Сообщ.
#3
,
|
|
|
Цитата FFF1 @ ну стало быть создать второй поток что-то слишком много получаетс потоков для простого отображения диалога |
Сообщ.
#4
,
|
|
|
потоки бесплатные ) был один - стало два.
вопрос - "есть поток, ему управление не возвращается N секунд. как что-то делать в это время?" И что же можно ещё ответить?) |
Сообщ.
#5
,
|
|
|
стоило бы указать на чем пишешь. Если Qt, то есть специальный диалог QProgressDialog
|
Сообщ.
#6
,
|
|
|
Цитата sploid @ стоило бы указать на чем пишешь. Если Qt, то есть специальный диалог QProgressDialog так что он изменит, если первичный поток вызывает метод |
Сообщ.
#7
,
|
|
|
Т.е. ты хочешь что бы был только первичный поток и он выводит что-либо, в то время как он же и является занятым, т.е. управление ему не вернулось?
|
Сообщ.
#8
,
|
|
|
Цитата FFF1 @ Т.е. ты хочешь что бы был только первичный поток и он выводит что-либо, в то время как он же и является занятым, т.е. управление ему не вернулось? все проще - я хочу. чтобы первичный поток при вызове долгого метода отображал диалог состояния |
Сообщ.
#9
,
|
|
|
Что бы отображалось какое-то окно, надо иметь поток, выполняющий хотя бы такие, или похожие действия:
while (GetMessage( &msg, 0, 0, 0 )) DispatchMessage( &msg ); , либо будет диалог (запущеный DialogBoxParam) и он тоже заморозит твой поток. Точнее, будет выполняться в нем, не возвращаю управления. Неблокирующих диалогов я ещё не видел) У тебя есть один поток. Выбирай, либо он что-то считает, вызывает метод, короче висит, либо он обслуживает окно. Можно конечно извращаться, выполняя вычисления внутри оконной ф-ии или цикла с GetMessage(), распределяя как-нибудь там время (что по сути и является своей реализацией потоков) и т.п. но это полнейший бред и ни к чему вообще - неужели нельзя создать второй поток и делать в нем что угодно? |
Сообщ.
#10
,
|
|
|
Цитата FFF1 @ Можно конечно извращаться, выполняя вычисления внутри оконной ф-ии или цикла с GetMessage(), распределяя как-нибудь там время (что по сути и является своей реализацией потоков) и т.п. но это полнейший бред и ни к чему вообще - неужели нельзя создать второй поток и делать в нем что угодно? тут не совсем понятно кто кого должен ждать |
Сообщ.
#11
,
|
|
|
Цитата Форум на Исходниках.RU · C/C++ · *nix / gcc / Eclipse / Qt / wxWidgets О как, а я что-то не обратил внимания что это про *nix раздел, пишу и пишу про винду... Но все равно схема по сути та же Цитата тут не совсем понятно кто кого должен ждать Второй (что с диалогом) - первого. Пока первый работает - второй показывает его состояние, точнее прогресс ... |
Сообщ.
#12
,
|
|
|
Цитата FFF1 @ Пока первый работает - второй показывает его состояние, точнее прогресс ... это как это ? они ничего не могут знать о состоянии друг-друга З.Ы. И еще не совсем понято - запуская приложение окно отображается где ему захочется(диалоговые окна тоже). Можно ли как сказать, чтоб окну отрисовываться по центру, а диалоги (дочерние) по центру родителя |