Название: Поток и таймер Отправлено: like-nix от Апрель 06, 2011, 19:03 Здравствуйте уважаемые коллеги.
Я сейчас активно пользуюсь поиском по форуму и пока возникло несколько вопросов надеюсь поможете решить несколько вопросов по работе с потоком и таймером. То, что я хочу реализовать. Есть контейнер, который содержит имена файлов. Файлы последовательно обрабатываются по имени из контейнера. Нужно передавать в GUI информацию о обработке. Сейчас обработка конкретного файла сделана просто Код: While(1) Проблема в том что очень часто обработка занимает очень мало времени меньше секунды, и поэтому обновление информации происходит слишком часто. И я думаю правильным в этой ситуации ввести таймер по котором будет выполняться обновление GUI из потока. Как я пытался с ним работать: Через mоveToThread(наверное не правильно) Мой код В конструкторе класса наследника от QThread Код: m_timerReloadProgress = new QTimer(this); слот Код: void FilesOpThread::slotProgress() Этот слот ни разу не срабатывает. В FilesOpThread::run() Есть. Код: m_timerReloadProgress->start(); Вопрос кстати нужен ли тут локер если переменная только для этого экземпляра класса? Походил по форуму нашел несколько похожих тем. Зачем в этом коде указывать DirectConnection? Источник http://www.prog.org.ru/index.php?topic=16871.msg112803#msg112803 Код: void CThr::run(void) Думаю насколько эффективнее станет если я заменю свою функцию emitUpdateProgress на loop.processEvents? Или есть более эффективные способы решить эту проблему. Жду предложений Название: Re: Поток и таймер Отправлено: Igors от Апрель 06, 2011, 19:13 Первое что бросается в глаза - а зачем хлопоты с таймером если можно просто засекать/накапливать время обработки в самом while и обновлять индикатор только когда прошло достаточно времени?
Название: Re: Поток и таймер Отправлено: like-nix от Апрель 06, 2011, 19:21 Т.е. через стандартный time? Да можно попробовать.
Название: Re: Поток и таймер Отправлено: mutineer от Апрель 07, 2011, 12:49 Код: this->moveToThread(this); Вот это точно не стоит делать |