Richtige Weg, um in der Nähe QCoreApplication

Mache ich ein Qt5 QCoreApplication für das herunterladen von Dateien von FTP-Servern (angefangen bei HTTP, jetzt eingeschaltet).

Ich ein problem auftreten, wenn mein Programm geschlossen werden. Nachdem ich Hinzugefügt exit(0) in downloader.cpp, mein Programm ist jetzt zu Ende, aber ich bekomme die folgende Fehlermeldung :

QWaitCondition: Zerstört, während die Fäden noch immer auf sich warten.

Mein code ist wie folgt :

main.cpp

#include <QCoreApplication>
#include <downloader.h>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    Downloader d;
    d.doDownload();

    a.exec();
}


**downloader.cpp**

#include "downloader.h"

Downloader::Downloader(QObject *parent) :
    QObject(parent)
{
}

void Downloader::doDownload() {

manager = new QNetworkAccessManager(this);
connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*)));

manager->get(QNetworkRequest(QUrl("ftp://ftp.fao.org/Public/GIEWS/windisp/40manual/wd4en.pdf")));
}


void Downloader::replyFinished (QNetworkReply *reply)
{

    if(reply->error()) {
        qDebug() << "ERROR!";
        qDebug() << reply->errorString();
    }
    else

    {
        qDebug() << "Download finished!";

        QFile *file = new QFile("C:/Users/jelicicm/Desktop/wd4en.pdf");

        if(file->open(QFile::Append))
        {
            file->write(reply->readAll());
            file->flush(); file->close();
            qDebug() <<"Downloaded file size:" <<(file->size())/1024<<"KB";
        }
        delete file;
    }

    reply->deleteLater();
    exit(0);

}

Bekomme ich die folgende Ausgabe :

Download Fertig! Heruntergeladene Datei Größe... QWaitCondition: Zerstört
während die Fäden noch immer auf sich warten.

Soweit ich feststellen können, alles, was ich mir vorgestellt habe, ist fertig. Datei wird heruntergeladen, und seine Größe wird vorgestellt. Aber ich denke, dieser Fehler muss etwas bedeuten.

Kann jemand mir erklären, was dieser Fehler ist, warum es Auftritt und wie man es patchen?

  • Versuchen Sie es mit qApp->exit(0). Da deine downloader-Klasse ist ein QObject Sie können auch erstellen und senden ein signal an die Stelle der exit-Aufruf für so etwas wie "abgeschlossen" und im main-connect-downloader "complete", um die "QCoreApplication::quit () - slot.
  • qApp->exit(0) gibt nichts gutes. werde versuchen, etwas zu machen, mit Anschluss von zwei Signalen... Thaks für Ihre Antwort!
InformationsquelleAutor Rorschach | 2015-03-25
Schreibe einen Kommentar