Seite 1 von 1

QNetWorkAccessManager erzeugt 760 Threads

Verfasst: 30. November 2012 18:56
von JohnR
Hallo

Ich habe ein Problem mit dem QNetWorkaccessManager.....

Ich möchte eine Liste mit Werten (IP´S) an die API einer Webseite schicken, das funktioniert auch alles prima....
nur beim Wert 70x/ca.4500 Einträgen bekomme ich

Code: Alles auswählen

QThread::start: Failed to create thread ()
"203.161.103.17"  :  747 
QThread::start: Failed to create thread ()
"203.206.223.144"  :  748 
QThread::start: Failed to create thread ()
"203.217.173.146"  :  749 
QThread::start: Failed to create thread ()
hier die beiden Funktionen

Code: Alles auswählen

void MainWindow::apicheck()
{

    qDebug() << "Sektor:" << t1;

    if (t4 == z1)
    {
        t1 = t1 + z2a;
    }

    QString ApiCheckIP;

    while (t3 < t1)
    {
        ApiCheckIP = "http://api.ip-adress.com/?u=SCHLÜSSEL=" + iplist[t3];
        qDebug() << iplist[t3] << " : " << t3;
        manager = new QNetworkAccessManager(this);
        connect(manager, SIGNAL(finished(QNetworkReply*)),this, SLOT(apianswer(QNetworkReply*)));
        manager->get(QNetworkRequest(QUrl(ApiCheckIP)));
        ++t3;
    }
    ++t4;

}

void MainWindow::apianswer(QNetworkReply *reply)
{

    apilist.append(reply->readLine());
    //qDebug() << "apilist.size()" << apilist.size;
    //delete reply;
    //delete manager;

    if (t1 == apilist.size())
    {
        t1 = t1 + t2;
        apicheck();
    }
}
die Schleifen sind für die Unterteilung in 50er Schritte, damit möchte ich mir einen Fortschrittsbalken bauen ^^, daran liegt es aber nicht, das "Abarbeiten" von immer 50 Einträgen klappt prima.

auch die "Antworten" kommen wie erwartet an werden der QStringlist hinzugefügt....

Mir ist schon klar das die Fehlermeldung bedeutet das hier xxx threads erzeugt wurden und jetzt Feierabend ist.....
Aber wie beende ich die Threads welche vom QNetworkRequest bzw. QNetworkreply erzeugt wurden sind ?

bspw. bewirkt reply->deletelater(); das mein Programm abschmiert.... hier scheine ich wieder einmal ein Verständnisproblem zu haben wo ich hoffe das mir einer von euch helfen kann :-)

Re: QNetWorkAccessManager erzeugt 760 Threads

Verfasst: 30. November 2012 19:13
von Christian81
Dir ist schon klar dass Du auch zig mal eine QNetworkManager-Klasse erzeugst? Da dies dann hunderte von Instanzen sind und jede Instanz einen eigenen Thread zum abarbeiten hat... naja den Rest kannste Dir denken.

Re: QNetWorkAccessManager erzeugt 760 Threads

Verfasst: 30. November 2012 19:21
von JohnR
nö ^^

aber jetzt habe ichs verstanden

Danke!