![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
AD |
![]()
Сообщение
#1
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
По каким-то причинам не работает таймер, который я хочу запустить в параллельном потоке.
В чем могут быть проблемы?
|
|
|
BRE |
![]()
Сообщение
#2
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: ![]() ![]() ![]() |
1. Обрати внимание, таймер создается в главном потоке!
2. В run() добавь exec(). |
|
|
AD |
![]()
Сообщение
#3
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
1. Обрати внимание, таймер создается в главном потоке! 2. В run() добавь exec(). Изменил. Не помогло. ![]() Code:
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#4
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
AD, таймер так и остался в главном потоке.
Помести его в run(). П.С. А собственно будет ли влиять положение таймера, ведь ему не устанавливается родительский объект? |
|
|
AD |
![]()
Сообщение
#5
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
AD, таймер так и остался в главном потоке. Помести его в run(). Почему в главном? Не понимаю:
|
|
|
BRE |
![]()
Сообщение
#6
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: ![]() ![]() ![]() |
Почему в главном? Не понимаю: Потому что вызов конструктора объекта ContinueRotation выполняется в контексте главной нити (точнее той из которой он конструируется), а свой контекст нить получает, только при входе в метод run(). Либо перенеси создание таймера в run или попробуй делать ему moveToThread. П.С. А собственно будет ли влиять положение таймера, ведь ему не устанавливается родительский объект? Будет влиять на то, где будет крутиться таймер, точнее в чьем цикле обработки событий он будет проверяться и откуда будет испускаться сигнал. Сообщение отредактировал BRE - 30.11.2009, 16:05 |
|
|
Litkevich Yuriy |
![]()
Сообщение
#7
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
BRE, понял, ведь это следует из задачи
![]() |
|
|
AD |
![]()
Сообщение
#8
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Мда... Руки у меня, что-ли, кривые.... Не выходит....
![]()
Вот полная версия run(). Все-равно, не попадает в reading(). |
|
|
BRE |
![]()
Сообщение
#9
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: ![]() ![]() ![]() |
Проверка и испускание сигнала от таймера происходит в цикле обработки событий, который запускается методом exec.
А у тебя к этому времени таймер уже остановлен. Сообщение отредактировал BRE - 30.11.2009, 17:24 |
|
|
AD |
![]()
Сообщение
#10
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Проверка и испускание сигнала от таймера происходит в цикле обработки событий, который запускается методом exec. А у тебя к этому времени таймер уже остановлен. Хорошо, спасибо. А я правильно понимаю, что это таймер заканчивает свое действие, как только программа выходит из функции run()? |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 13.6.2025, 14:45 |