На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела *nix / gcc / Eclipse / Qt / wxWidgets / GTK+
  • При создании темы ОБЯЗАТЕЛЬНО указывайте версию тулкита / библиотеки / компилятора.
  • Перед тем как задать вопрос, сформулируйте его правильно, чтобы вас могли понять.
  • Нарушение Правил может повлечь наказание со стороны модераторов.


Полезные ссылки:
user posted image Boost по-русски
user posted image Qt по-русски
Модераторы: archimed7592
  
> Диалог состояния
    у меня первичный поток вызывает метод, который может выполняться 5-10 сек.

    Чтоб user не нервничал нужно как-то отобразить диалог состояния. Но первичный поток ждет и ничего отрисовывать не будет.

    Как это можно сделать ?
      ну стало быть создать второй поток
        Цитата FFF1 @
        ну стало быть создать второй поток

        что-то слишком много получаетс потоков для простого отображения диалога :)
          потоки бесплатные ) был один - стало два.
          вопрос - "есть поток, ему управление не возвращается N секунд. как что-то делать в это время?"
          И что же можно ещё ответить?)
          Сообщение отредактировано: FFF1 -
            стоило бы указать на чем пишешь. Если Qt, то есть специальный диалог QProgressDialog
              Цитата sploid @
              стоило бы указать на чем пишешь. Если Qt, то есть специальный диалог QProgressDialog

              так что он изменит, если первичный поток вызывает метод
                Т.е. ты хочешь что бы был только первичный поток и он выводит что-либо, в то время как он же и является занятым, т.е. управление ему не вернулось?
                  Цитата FFF1 @
                  Т.е. ты хочешь что бы был только первичный поток и он выводит что-либо, в то время как он же и является занятым, т.е. управление ему не вернулось?

                  все проще - я хочу. чтобы первичный поток при вызове долгого метода отображал диалог состояния
                    Что бы отображалось какое-то окно, надо иметь поток, выполняющий хотя бы такие, или похожие действия:
                    ExpandedWrap disabled
                      while (GetMessage( &msg, 0, 0, 0 ))
                       DispatchMessage( &msg );


                    , либо будет диалог (запущеный DialogBoxParam) и он тоже заморозит твой поток.
                    Точнее, будет выполняться в нем, не возвращаю управления. Неблокирующих диалогов я ещё не видел)

                    У тебя есть один поток. Выбирай, либо он что-то считает, вызывает метод, короче висит, либо он обслуживает окно.

                    Можно конечно извращаться, выполняя вычисления внутри оконной ф-ии или цикла с GetMessage(), распределяя как-нибудь там время (что по сути и является своей реализацией потоков) и т.п. но это полнейший бред и ни к чему вообще - неужели нельзя создать второй поток и делать в нем что угодно?
                    Сообщение отредактировано: FFF1 -
                      Цитата FFF1 @
                      Можно конечно извращаться, выполняя вычисления внутри оконной ф-ии или цикла с GetMessage(), распределяя как-нибудь там время (что по сути и является своей реализацией потоков) и т.п. но это полнейший бред и ни к чему вообще - неужели нельзя создать второй поток и делать в нем что угодно?

                      тут не совсем понятно кто кого должен ждать :)
                        Цитата
                        Форум на Исходниках.RU · C/C++ · *nix / gcc / Eclipse / Qt / wxWidgets


                        О как, а я что-то не обратил внимания что это про *nix раздел, пишу и пишу про винду... Но все равно схема по сути та же

                        Цитата

                        тут не совсем понятно кто кого должен ждать


                        Второй (что с диалогом) - первого. Пока первый работает - второй показывает его состояние, точнее прогресс ...
                          Цитата FFF1 @
                          Пока первый работает - второй показывает его состояние, точнее прогресс ...

                          это как это ? они ничего не могут знать о состоянии друг-друга

                          З.Ы. И еще не совсем понято - запуская приложение окно отображается где ему захочется(диалоговые окна тоже). Можно ли как сказать, чтоб окну отрисовываться по центру, а диалоги (дочерние) по центру родителя
                          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                          0 пользователей:


                          Рейтинг@Mail.ru
                          [ Script execution time: 0,0364 ]   [ 16 queries used ]   [ Generated: 28.04.24, 05:57 GMT ]