Internet-abfrage in Thread auslagern



  • Hallo Leute.

    Ich steh hier grad vor folgendem Problem und komm einfach nicht weiter:

    Ich habe ein Programm was Daten aus dem Internet abruft. Nun ist das Problem dass jedesmal wenn aus dem Internet Daten gefordert werden (mit nem THTTPIO) das Programm kurz hängt.

    Desshalb hab ich jetzt angefangen die HTTPIO Komponente in einen Thread auszulagern. Nur ist jetzt mein Problem wie ruf ich überhaupt Funktionen in dem Thread auf/wie bring ich den Thread aus der Hauptanwendung heraus dazu, die erforderlichen Daten aus dem Internet abzurufen. Ich kann leider nicht jedesmal einen neuen Thread erstellen für jede Abfrage, da die Verbindung gehalten werden muss.

    Wenn ich einfach sowas wie

    Thread->HoleDaten()

    aufrufe, dann wird doch die Funktion einfach von der Hauptanwendung ausgeführt und ich hab wieder den blöden Hänger. oder nicht ?

    Wär super wenn mir jemand helfen kann.
    Gruß Simon



  • Ja, so geht das nicht.

    Mir fällt auf Anhieb nur ein, eine MessageQueue zu benutzen.
    Der Thread wird gestartet und wartet darauf, daß eine Message ankommt (dazu mußt du dann aber den Schreibzugriff locken - oder aber z.B. TThreadList benutzen).
    Der Thread wartet in einer Endlosschleife auf das Eintreffen und arbeitet dann den Befehl ab (und entfernt dann die Message aus der Queue).

    Ich hoffe, ich habe es einigermaßen verständlich ausdrücken können.


Anmelden zum Antworten