суть примерно такая: из главного окна GUI запускается класс с запросами
for(int i=0; i< list.count(); i++)
{
((Class1*)list.at(i))->startProcess();
}
запускаем запросы
for (int i=0; i< this->list.count(); i++)
{
if(!abort)
{
MyNetworkAccessManager *manager = new MyNetworkAccessManager(this);
manager->i = i;
manager->moveToThread(this->thread());
manager->setParent(this);
QString url = list.at(i)->url;
//qDebug()<< "get " + url;
QNetworkReply* reply = manager->get(QNetworkRequest(QUrl(url)));
connect(manager, SIGNAL(finished(QNetworkReply*)),this, SLOT(replyFinished_listDesc(QNetworkReply*)));
connect(reply, SIGNAL(downloadProgress(qint64,qint64)), this, SLOT(downloadProgress_listDesc(qint64,qint64)));
connect(reply, SIGNAL(finished()), this, SLOT(finished_listDesc()));
connect(reply, SIGNAL(readyRead()), this, SLOT(readyRead_listDesc()));
this->listReplies.append(reply);
}
}
пытаюсь удалить объекты
void Class1::stop()
{
abort = true;
for(int i=0; i < listReplies.count(); i++)
{
QNetworkReply *reply = (QNetworkReply *)listReplies.at(i);
reply->disconnect();
reply->manager()->disconnect();
reply->abort();
reply->deleteLater();
reply->manager()->deleteLater();
}
}
ответ обрабатывается примерно так
void Class1::replyFinished_listDesc(QNetworkReply* reply)
{
if(abort)
{
return;
}
.......
}
удаляю объекты класса, падает на delete, есть подозрение, что запрос еще не завершился (притом самый последний)
for(int i=0; i< list.count(); i++)
{
Class1* t = (Class1*)list.at(i);
t->stop();
delete t;
}
куда копать?