AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Problem beim auswerten eines Threadergebnisses
Thema durchsuchen
Ansicht
Themen-Optionen

Problem beim auswerten eines Threadergebnisses

Offene Frage von "VizeTE"
Ein Thema von VizeTE · begonnen am 30. Jan 2007 · letzter Beitrag vom 1. Feb 2007
 
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
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz