Название: Завершить слот Отправлено: blood_shadow от Апрель 24, 2011, 04:17 Всем доброе утро,
Создаю отдельный поток в этом потоке объект someObject, к которому подключаю слот someSlot(выполняет продолжительную операцию) 1. Вопрос как убить слот someSlot еще до его завершения? то есть при наступлению какого-то события выйти с него сразу 2. и второй вопрос если слот someSlot выполняется и вызывается еще раз этот самый слот (допустим по нажатию кнопки) то этот слот выполниться только после завершения первого? Название: Re: Завершить слот Отправлено: Fat-Zer от Апрель 24, 2011, 04:30 1. завести какой-нибудь флаг, который проверять во время выполнения продолжительной операции (ведь там же какой-то цикл)
2. не очень понятно... можно кусок кода. Название: Re: Завершить слот Отправлено: blood_shadow от Апрель 24, 2011, 04:46 1. завести какой-нибудь флаг, который проверять во время выполнения продолжительной операции (ведь там же какой-то цикл) дело в том что там стоит что-то наподобии этого:2. не очень понятно... можно кусок кода. Код где TIMEOUT - где-то 10 сек. меньше делать, с одной стороны не дает чувство, а вдруг медленный интернет, но и со слота 10 сек если что то выйти нельзя.. Название: Re: Завершить слот Отправлено: Fat-Zer от Апрель 24, 2011, 05:05 ещё можно попробовать убивать поток терминейтом, правда это может не сработать, да и опасно это... (по этому поводу тут тема уже была, пришли к выводу, что гарантированно и безопасно убить можно только процесс).
ещё можно что-то вроде этого соорудить: Код ещё можно причесать всё это... Название: Re: Завершить слот Отправлено: CL0NE от Апрель 24, 2011, 17:34 1. Можно сделать это слотом для остановки, в котором установим флаг "остановиться". А в теле слота "работа" либо добавить свой event loop, либо processEvents приложения использовать, и проверять флаг "остановиться".
2. Да. Пока выполняется тело слота, цикл обработки событий в данном потоке приостанавливается. После выхода из слота в цикл поступит следующее событие и слот снова вызовется. (Стоит прочитать обе части http://habrahabr.ru/blogs/qt_software/115830/) З.Ы. как-то тема никак не относится к model-view Название: Re: Завершить слот Отправлено: blood_shadow от Апрель 24, 2011, 17:50 З.Ы. как-то тема никак не относится к model-view да вы правы, только сегодня увидел, в 4 часа утра вообще бошка помутнела :)Название: Re: Завершить слот Отправлено: blood_shadow от Апрель 28, 2011, 15:52 сначала было все хорошо, вместо sslSocket.waitForReadyRead(10000) приделал конструкцию:
Код
потом я заметил что waitForReadyRead иногда выдает false даже если данные есть, и тогда весь цикл выполняется, заглянул на баг трекер - http://bugreports.qt.nokia.com/browse/QTBUG-14975 и вот оно... походу без терминейта не обойтись или код переписать асинхронно... |