![]() |
TAniIndicator stoppt immer beim TIdHTTP.Get
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,
ich habe in meiner Anwendung einen TAniIndicator. Dieser soll sich drehen, während die Anwendung in einem Thread über die TIdHTTP verschiedene GET-Abfragen macht. Jetzt habe ich nur das Problem, dass jedes mal bei der GET-Abfrage der TAniIndicator stoppt, obwohl ich meiner Meinung nach alles im Thread habe. Wieso wird der TAniIndicator angehalten ? Habe ich vielleicht einen Fehler in meiner TThread-Klasse ? Als Anhang mal mein kleines Beispielprojekt. |
AW: TAniIndicator stoppt immer beim TIdHTTP.Get
Lass den Thread weg, denn es ist total sinnlos, wenn du den Thread startest und das Erste, was du machst, ist die komplette Funktion sofort wieder in den Hauptthread zu synchronisieren, also dort auszuführen. :zwinker:
Lösungen: - ![]() - Oder den Download wirklich im Thread ausführen und dabei ist es nicht schlecht, wenn die Komponente auch erst im Thread erstellt wird. PS: Ich hoff' das wird ein iOS/Android-Programm, denn im Windows gibt keiner das IdHTTP_Main frei. |
AW: TAniIndicator stoppt immer beim TIdHTTP.Get
Bei solchen Problemen mit Threads ist es immer das Ergebnis von diesem Vergleich wichtig kurz bevor die langlaufende Funktion ausgeführt wird:
Delphi-Quellcode:
Der Wert der Variablen ist dann selbsterklärend ;)
var
LWillFreezeUI : Boolean; LWillFreezeUI := MainThreadId = TThread.CurrentThread.ThreadId; // Jetzt die langlaufende Funktion aufrufen IdHttp.Get( ... ); |
Der Wert der Variablen ist dann selbsterklärend
Zitat:
Wenn schon, dann bitte auch noch Woman, wegen der Antidiskriminierung und so. :zwinker: Aber ja, wir wissen schon, was du meinst. :lol: |
AW: Der Wert der Variablen ist dann selbsterklärend
Zitat:
Die :cat: schaut ganz unschuldig drein, aber das heißt ja nichts ;) |
AW: Der Wert der Variablen ist dann selbsterklärend
Zitat:
Wollte vorhin den Post eigentlich als PN verschicken, aber irgendwer hat mich ins falsche Fenster umgeleitet, glaub ich. :stupid: |
AW: TAniIndicator stoppt immer beim TIdHTTP.Get
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Aber im Anhang mal ein Beispiel wie es richtig funktioniert. Ob das so am sinnvollsten ist, muss man am konkreten Fall schauen. |
AW: TAniIndicator stoppt immer beim TIdHTTP.Get
TIdAntiFreeze kann auch nicht vorm totalen "Einfrieren" schützen, denn es macht im Grunde nichts Anders, als sich quasi ins TIdHTTP.OnWork reinzuhängen und dort ein Application.ProgressMessages aufzurufen.
OnWork wird nunmal nur beim Empfang von Datenblöcken aufgerufen und wenn der Empfang nun langsam ist oder gar hängt, dann kann das nichts machen, bis ein eventuelles TimeOut die Verbindung trennt oder doch nochmal was rein kommt. |
AW: TAniIndicator stoppt immer beim TIdHTTP.Get
Danke an alle, für die Tipps, einige davon werde ich in meine nächsten Apps mit einfließen lassen. Ich habe es jetzt so gelöst, dass der Thread die ganze Arbeit macht und erst wenn diese Fertig ist, werden die relevanten Daten an den MainThread zurückgegeben.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz