Ich arbeite an einer Anwendung, die den Inhalt der Datei auf den Server hochlädt.Warten auf ein Signal
Zum Hochladen der Datei zum Server verwende ich die Klasse 'QNetworkAccessManager'. Da es asynchron arbeitet, habe ich es so geändert, dass es mit QEventLoop synchron arbeitet.
Class FileTransfer
{
Public :
QNetworkAccessManager mNetworkManager;
Void Upload(QNetworkRequest request, QIODevice *data)
{
responce = mNetworkManager.put(request, data);
EventLoop.exec();
ReadResponce(responce);
}
Void Stop()
{
responce ->close();
}
}
In meiner Beispielanwendung habe ich 2 Fenster. 1. um die Dateien auszuwählen und 2. um den Fortschritt anzuzeigen.
Wenn der Benutzer im ersten Fenster auf den Upload-Button klickt, wird das zweite Fenster angezeigt und dann erstelle ich das FileTransfer Objekt und beginne mit dem Hochladen.
beim Hochladen der Datei, wenn der Benutzer das Formular dann im Destruktor des Fensters schließt ich den Anschlag von ‚Filetransfer‘ nennen nach, dass ich das Objekt ‚Filetransfer‘ löschen.
Aber hier ist die Upload() Funktion ist noch nicht abgeschlossen, so wird es zum Absturz bringen.
Bitte helfen Sie mir zu: Wie in ‚stop()‘ Funktion bis zum Hochladen warten() Funktion
abgeschlossen ist
ja, habe ich den Code, sobald die Ereignisschleife zu verlassen, wie wir Finish Slot erhalten:
Dazu geben Sie einen Wrapper benötigen würde. Das Problem liegt jedoch beim Herunterladen der Datei, wenn der Benutzer die Verbindung beendet und das Objekt löscht. aber die Upload-Funktion ist noch nicht abgeschlossen. Zu dieser Zeit wird es zusammenbrechen. –