Название: QNetworkAccessManager и QThread Отправлено: ecspertiza от Июнь 25, 2009, 16:20 Подскажите пожалуйста как их подружить, если я организовываю скачивание в главном потоке то всё отлично, если пытаюсь сделать закачку в вторичном потоке то всё плохо вот исходник
Код: #include <QtCore/QCoreApplication> вот в этом куске всё падает file.write(reply->readAll()); где я туплю ???, уже несколько дней разобраться немогу :) Название: Re: QNetworkAccessManager и QThread Отправлено: SABROG от Июнь 25, 2009, 16:51 У меня ничего не падает.
Название: Re: QNetworkAccessManager и QThread Отправлено: ecspertiza от Июнь 25, 2009, 19:46 Уменя Qt 4.5.0 MinGW или gcc Windows Vista падает с такой ошибкой
Код: C:\threadDownload4\debug>threadDownload5.exe http://127.0.0.1/AdobePhotoshopCS4. или просто молча, ещё под OpenSUSE 11.1 собирал падает с ошибкой сигментирования. может Qt обновить... Название: Re: QNetworkAccessManager и QThread Отправлено: SABROG от Июнь 25, 2009, 21:46 У меня не упала видимо потому, что я в release собирал. Завтра посмотрю еще раз.
Название: Re: QNetworkAccessManager и QThread Отправлено: ecspertiza от Июнь 25, 2009, 21:48 Ну вобщем обновил я и Qt до 4.5.2 и MinGW вместе сним, пересобрал софт всё тоже. Пробовал в обоих сборках и в debug и release.
Название: Re: QNetworkAccessManager и QThread Отправлено: ecspertiza от Июнь 25, 2009, 21:56 Да забыл сказать падает с файлами большого размер я пытаюсь скачать 2гб.
Название: Re: QNetworkAccessManager и QThread Отправлено: ecspertiza от Июнь 26, 2009, 09:25 Кажется справился, помог метод "Мюнхаузена" :) В конструкторе потока прописал moveToThread(this) и вроде как заработало, SABROG, спасибо в твоём блоге прочитал )))
Название: Re: QNetworkAccessManager и QThread Отправлено: SABROG от Июнь 26, 2009, 10:39 Вообще странно всё это:
Код: [New thread 4676.0x1218] Попробую троллям отрепортить. Название: Re: QNetworkAccessManager и QThread Отправлено: ecspertiza от Июнь 26, 2009, 10:57 Вообще странно всё это: Немогу несогласиться, если троли чего дельного напишут, расскажи ,а то интересно уже)))) Название: Re: QNetworkAccessManager и QThread Отправлено: SABROG от Июнь 26, 2009, 12:00 Они где-то на 3-4 моих предыдущих багрепорта вообще ничего не ответили :-\
Название: Re: QNetworkAccessManager и QThread Отправлено: SABROG от Июль 02, 2009, 16:35 В общем такая тема:
Цитировать Hi Sabrog Your ThreadHttpDownload object belongs to the main thread. So the slot ThreadHttpDownload::readyRead() above is run in the main thread, while the QNetworkAccessManager and QNetworkReply are running in the thread. That means the signal readyRead() is queued before delivered to your object. That's why you get the zeroes in size. And you're calling readAll() from a thread that is not reply's thread. That's a big violation of the QObject guidelines. That's why you're getting the crashes. This is not a Qt bug. -- Thiago Macieira - thiago.macieira (AT) nokia.com Senior Product Manager - Nokia, Qt Software Sandakerveien 116, NO-0402 Oslo, Norway Название: Re: QNetworkAccessManager и QThread Отправлено: ecspertiza от Июль 03, 2009, 11:40 Пасиба, тоесть на сколько я понимаю moveToThread(this) в конструкторе правельный выход, но вот всётаки интересно почему readReady() работает в основном потоке а не в вторичном, как то это неправельно ???
Название: Re: QNetworkAccessManager и QThread Отправлено: SABROG от Июль 03, 2009, 15:38 Чет я сам понять не могу. Явно же делаем moveToThread на reply, значит должно работать.
Название: Re: QNetworkAccessManager и QThread Отправлено: Ymilij от Март 20, 2010, 07:31 Спасибо, эта тема помогла, наконец, разобраться с QNetworkAccessManager.
|