Einzelnen Beitrag anzeigen

VizeTE

Registriert seit: 31. Dez 2002
178 Beiträge
 
Delphi 5 Enterprise
 
#1

Problem beim auswerten eines Threadergebnisses

  Alt 30. Jan 2007, 20:07
Hallo zusammen,

hier mal meine Ausgangssituation:

Ich starte eine Internetabfrage um genau 1 Wert zu bekommen. Da das manchmal länger dauert habe ich mich dazu entschlossen diese Funktion in einen Thread auszulagern. Außerdem möchte ich nicht ewig auf die Antwort warten und breche den Thread im Zweifelsfall ab. Also etwa so:

1. Thread erstellen und mit Parameter versorgen
2. Zeit x auf Thread warten
3. Falls Thread fertig ist Ergebnis auswerten
4. Thread freigeben

Da ich in Punkt 3 das Ergebnis auswerten möchte habe ich "FreeOnTerminate" des Threads auf "false" gesetzt.

und nun das Problem

Wenn in Punkt 2 die Abfrage zu lange dauert wird der Thread ja abgebrochen. Punkt 3 wird übersprungen und ich gebe den Thread frei. Der Aufruf "Thread.Free" dauert in diesen Fall aber so lange bis der Thread die Abfrage beendet hat. Und genau das gefällt mir nicht.

Der Zeitfresser innerhalb des Threads ist die Methode "Connect" um eine Socket-Verbindung herzustellen. Dort sehe ich leider keine Möglichkeit die "Terminated"-Eigenschaft des Threads abzufragen und den Vorgang entsprechend zu beenden.

Meine erste Idee war es eine Möglichkeit zu finden "FreeOnTerminate" zu verwenden. Da ich aber in Punkt 3 auf den Thread zugreifen möchte wird das nicht funktionieren.
Eine Lösung wäre es vielleicht das Ergebnis via "OnTerminate"-Event in eine globale Variable zu schreiben und diese im Erfolgsfall auszulesen. Aber so richtig gefällt mir diese Lösung nicht.

Habt ihr eine Idee wie man das "ordentlich" lösen kann?


Danke,
Daniel
  Mit Zitat antworten Zitat