QNetWorkAccessManager erzeugt 760 Threads

Alles rund um die Programmierung mit Qt
Antworten
JohnR
Beiträge: 42
Registriert: 3. Dezember 2011 12:23

QNetWorkAccessManager erzeugt 760 Threads

Beitrag 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 :-)
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: QNetWorkAccessManager erzeugt 760 Threads

Beitrag 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.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
JohnR
Beiträge: 42
Registriert: 3. Dezember 2011 12:23

Re: QNetWorkAccessManager erzeugt 760 Threads

Beitrag von JohnR »

nö ^^

aber jetzt habe ichs verstanden

Danke!
Antworten