Знаю, что эта тема всем уже набила оскомину, но может найдутся добрые люди, которые поставят в ней точку?!
В общем есть гипотетическая задача запустить
QNetworkAccessManager из отдельного потока, хотя это не обязательно и в отдельном потоке можно запустить только
QNetworkReply. Пример рабочего приложения прилагается, см.
cadvertise.cpp и
cadvertise.h. Ошибка вываливается, если закрыть программу во время загрузки страницы (см. httpFinished). Всякие трюки типа:
C++ (Qt)
abort = true;
if(reply != 0 && reply->isRunning())
{
reply->abort();
reply->close();
}
exit();
wait(); // wait for thread finish for correct resources deallocation
не помогают. Ошибка вываливается на -
C++ (Qt)
96: delete manager;
Если подождать пока страница полностью загрузится - ошибка не возникает:
ASSERT failure in QCoreApplication::sendEvent: "Cannot send events to objects owned by a different thread. Current thread 3d6730. Receiver '' (of type 'QNativeSocketEngine') was created in thread b6c1968", file kernel\qcoreapplication.cpp, line 349
QWaitCondition: Destroyed while threads are still waiting
Хочется выяснить - мой ли это баг: я не дочитал документацию по Qt? Или это баг Qt - люди поместили в июле и сентябре:
http://bugreports.qt.nokia.com/browse/QTBUG-12302http://bugreports.qt.nokia.com/browse/QTBUG-13574?page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel