Einzelnen Beitrag anzeigen

DaWalt

Registriert seit: 22. Apr 2005
Ort: Dortmund
13 Beiträge
 
#42

Re: Beispiel zum Versenden von Dateien mit Indy

  Alt 1. Mai 2005, 19:27
Zitat von cgimda:

Genauer gesagt liegt es an dieser Zeile:

Delphi-Quellcode:
// jetzt durch den Thread die Methode UpdateProgress ausführen
// dieses muss mit Syncronize gemacht werden, mehr dazu in Delphi Hilfe
AThread.Synchronize(UpdateProgress);
Wenn ich also "AThread.Synchronize(UpdateProgress);" aus der Funktion herausnehme funktioniert das Programm wieder. Leider ist dann die ProgressBar nicht mehr verfügbar.

Wenn ich also während des Empfangen, irgendetwas versuche anzuzeigen bleibt das Programm hängen. Und Wenn es nur ein "Refresh" ist.

Kann mir jemand sagen warum das bei Delphi 7 so ist? DataCool hat es mit Delphi 5 programmiert und es hat funktioniert. Hat jemand eine Lösung für das Problem?
Hallo cgimda,
des Rätsels Lösung (zumindest bei mir : Ändere die Zeile "AThread.Synchronize(UpdateProgress);" in "UpdateProgress;". Das ganze hängt damit zusammen, dass die VCL nicht threadsicher ist, d.h. dass man der Oberfläche Bescheid sagen muß, wenn man von einem Thread aus etwas von ihr will. Ich muß allerdings ehrlich sagen, dass ich das bis heute auch noch nicht so recht durchdrungen habe. Ich versuche halt, Threads aus dem Weg zu gehn. Eigentlich hätte das mit Synchronize richtig sein müssen. ???
Gruß aus Dortmund

DaWalt
  Mit Zitat antworten Zitat