Здравствуйте, гость ( Вход | Регистрация )
|
fortero |
6.10.2011, 13:49
Сообщение
#1
|
|
Участник ![]() ![]() Группа: Участник Сообщений: 132 Регистрация: 4.12.2010 Пользователь №: 2242 Спасибо сказали: 0 раз(а) Репутация: 0
|
Господа специалисты, подскажите как быть с QThread как бы всё работает но при закрытии последнего окна виджета программа висит, тред дальше пашет...
Подскажите где я ошибся: secondclass.cpp Спасибо за внимание! |
|
|
|
![]() |
|
silver47 |
6.10.2011, 14:01
Сообщение
#2
|
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: 6
|
Неверно используете поток.
|
|
|
|
|
fortero |
6.10.2011, 15:09
Сообщение
#3
|
|
Участник ![]() ![]() Группа: Участник Сообщений: 132 Регистрация: 4.12.2010 Пользователь №: 2242 Спасибо сказали: 0 раз(а) Репутация: 0
|
Покажите как надо... А то я только такого типа примеры нашёл....
|
|
|
|
|
RazrFalcon |
6.10.2011, 15:49
Сообщение
#4
|
![]() Zombie Mod ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212
|
thread->quite();
|
|
|
|
|
fortero |
6.10.2011, 15:59
Сообщение
#5
|
|
Участник ![]() ![]() Группа: Участник Сообщений: 132 Регистрация: 4.12.2010 Пользователь №: 2242 Спасибо сказали: 0 раз(а) Репутация: 0
|
Не получается всёравно весит!
Покажите пожалуйста рабочий сампл, очень надо, пожалуйста. Сообщение отредактировал fortero - 6.10.2011, 16:01 |
|
|
|
|
silver47 |
6.10.2011, 17:37
Сообщение
#6
|
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: 6
|
Если вы делаете цикл типа:
то тогда не вижу смысла заворачивать все это в класс, унаследованный от QThread. Запустите это в отдельном потоке через QtConcurrent::run. Для этого создайте у нужного Вам класса метод, назовем его для простоты myBackgroundWork и вызовем его:Если же Вы оборачиваете все это в QThread, то будьте любезны - используйте метод exec() для запуска цикла обработчика событий, и используйте класс так, как будто это программа от начала и до конца. Например так: Что Вам необходимо сделать в потоке? Сообщение отредактировал silver47 - 6.10.2011, 17:38 |
|
|
|
|
fortero |
6.10.2011, 20:49
Сообщение
#7
|
|
Участник ![]() ![]() Группа: Участник Сообщений: 132 Регистрация: 4.12.2010 Пользователь №: 2242 Спасибо сказали: 0 раз(а) Репутация: 0
|
Спасибо попробую.
Цитата(silver47 @ 6.10.2011, 17:37) Link ............ Что Вам необходимо сделать в потоке? Сокеты слушать. |
|
|
|
|
fortero |
6.10.2011, 21:53
Сообщение
#8
|
|
Участник ![]() ![]() Группа: Участник Сообщений: 132 Регистрация: 4.12.2010 Пользователь №: 2242 Спасибо сказали: 0 раз(а) Репутация: 0
|
Ребят, я что то не догоняю или совсем тупой.
Пожалуйста помогите мне… Начал разбираться дальше не получается, хоть убей… Потом курил маны, вышло вот, что: main.cpp secondclass.h secondclass.cpp Теперь вроде как работает, но если верить оф. ману, то это опасный вариант - terminate(); В режиме релиза работает вроде чётко! А вот в отладке секунд 10 дуплится и потом вроде бы как срабатывает, так и должно быть или где то я на бокапорил? Покажите пожалуйста действующую модель кода, не схему а именно копипаст а то я не могу раскурить не как эту тему! Спасибо! Сообщение отредактировал fortero - 6.10.2011, 21:54 |
|
|
|
|
silver47 |
7.10.2011, 4:00
Сообщение
#9
|
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: 6
|
Сокеты нужно слушать не в постоянном цикле, а запустить цикл обработчика событий... а дальше на сигналах - слотах.
Создание сокета и его запуск: сам поток: Сообщение отредактировал silver47 - 7.10.2011, 4:07 |
|
|
|
|
fortero |
7.10.2011, 14:23
Сообщение
#10
|
|
Участник ![]() ![]() Группа: Участник Сообщений: 132 Регистрация: 4.12.2010 Пользователь №: 2242 Спасибо сказали: 0 раз(а) Репутация: 0
|
Цитата(silver47 @ 7.10.2011, 4:00) Link Сокеты нужно слушать не в постоянном цикле, а запустить цикл обработчика событий... а дальше на сигналах - слотах. Создание сокета и его запуск: ..................... Спасибо огромное! Я понимаю я наверное прошу многое, но Вы не могли написать готовый рабочий пример сокетов в отдельном потоке даже без шифрования. В этой теме я сильно плаваю, мне нужен готовый простейший, правильный пример что бы разобраться как, что работает... Ещё раз огромное спасибо! |
|
|
|
![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 2.1.2026, 15:21 |