warten bis http seite komplett geladen ist
warten bis http seite komplett geladen ist
hi, ich habe ein programm in dem ich QHttp::get(QString) aufrufe um eine URL zu holen... dann wird ja ein requestFinished(int, bool) emittet... das funzt alles einwandfrei. ich krieg den quelltext und alles, kein proble. mein problem ist:
ich rufe mehrere URLs aus einer QStringList auf. ich will die jetzt hintereinander aufrufen. und nun das wichtige: ich will, dass die nächste urls erst dann bearbeitet wird wenn die vorherige komplett abgearbeitet wurde. wie stell ich das an? wie warte ich so lange bis mein slot, der mit requestFinished(int, bool) connected ist, fertig gelaufen ist und mache dann erst in meiner schleife, die die URLs aus der StringList liest weiter?
Gr33tz Goddchen
ich rufe mehrere URLs aus einer QStringList auf. ich will die jetzt hintereinander aufrufen. und nun das wichtige: ich will, dass die nächste urls erst dann bearbeitet wird wenn die vorherige komplett abgearbeitet wurde. wie stell ich das an? wie warte ich so lange bis mein slot, der mit requestFinished(int, bool) connected ist, fertig gelaufen ist und mache dann erst in meiner schleife, die die URLs aus der StringList liest weiter?
Gr33tz Goddchen
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
ja und was für ne abbruchbedingung schreib ich dann in meine schleife? das problem ist ja, dass ich auf diese requestfinished sache keinen einfluss hab... bis das mal eintritt ist die schleife tausend mal durchgelaufen. und irgendwann muss ich ja auch das element aus der liste rauslöschen welches ich mit get() hole...
die sache ist die, durch das das get() kommen in die liste wieder neue elemente, die danach auch wieder mit get() geholt werden müssen.
ich hab das problem, dass ich halt reinschreib while(liste.size()!=0)... aber dann geht das erste get() los, das element wird gelöscht, und die while bedingung wird geprüft bevor das get() die nächsten elemente in die liste gepackt hat... deshalb muss ich warten bis das requestfinished fertig gelaufen ist bevor das nächste mal die while bedingung geprüft wird.
ich sollte also irgendwie verhindern, dass die while bedinungen überprüft wird, so lange das request nicht fertig behandelt ist und die neuen sachen in der liste stehen
die sache ist die, durch das das get() kommen in die liste wieder neue elemente, die danach auch wieder mit get() geholt werden müssen.
ich hab das problem, dass ich halt reinschreib while(liste.size()!=0)... aber dann geht das erste get() los, das element wird gelöscht, und die while bedingung wird geprüft bevor das get() die nächsten elemente in die liste gepackt hat... deshalb muss ich warten bis das requestfinished fertig gelaufen ist bevor das nächste mal die while bedingung geprüft wird.
ich sollte also irgendwie verhindern, dass die while bedinungen überprüft wird, so lange das request nicht fertig behandelt ist und die neuen sachen in der liste stehen
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Du hast doch Zugriff auf liste, oder?
dann ein
Alerdings dachte ich das die requestFinished() - Methode im gleichen Thread ist, oder? Dann kannst Du auch eine Variable bReady setzen um zu signalisieren dass die Liste jetzt leer ist.
dann ein
Code: Alles auswählen
while(!list.isEmpty())
sleep(kurze Zeitspanne);
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Hier noch besser und richtiger:
http://doc.trolltech.com/4.2/qthread.html#exec

http://doc.trolltech.com/4.2/qthread.html#exec
Habe ich doch schon geschrieben...und was schreib ich dann in die while schleife rein?
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
ja natürlich, aba ich poste halt immer das was ich gerade probiert habe... jetzt hab ich grad das mit exec getestet... bei der ersten URL die bearbeitet wird funktioniert das noch und dann ist ende gelände...
bei der erste URL wartet exec() bis ich quit() aufrufen... und bei den nächsten sage ich exec() die funktion returned sofort und es geht weiter... exec() wartet nicht mehr bis ich quit() aufrufe
bei der erste URL wartet exec() bis ich quit() aufrufen... und bei den nächsten sage ich exec() die funktion returned sofort und es geht weiter... exec() wartet nicht mehr bis ich quit() aufrufe
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Kannst Du mir mal sagen was Du da machst? Natürlich beendet sich der trhead wenn Du quit aufrust... Warum machst Du es nicht einfach so wie ich es gesagt habe und rufst in requestFinished die nächste URL auf?
/edit
Ich mein wie haben doch alles hier diskutiert wie es zu machen ist, oder?
/edit
Ich mein wie haben doch alles hier diskutiert wie es zu machen ist, oder?
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung