AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit Indy FTP in eigenem Thread

Ein Thema von karma · begonnen am 20. Feb 2009 · letzter Beitrag vom 21. Feb 2009
 
karma

Registriert seit: 14. Mai 2008
27 Beiträge
 
#1

Probleme mit Indy FTP in eigenem Thread

  Alt 20. Feb 2009, 18:42
Hallo Leute,
ich hoffe ich bin im richtigen Forum für meine Frage.
Ich habe folgendes Problem: Ich habe in meinem Programm den FTP Client in einen eigenen Thread ausgelagert, damit mein Form nicht hängt während er aktiv ist. Das funktioniert auch prima, allerdings wartet das Programm, wenn ich es beenden möchte, darauf, dass z.B. eine laufende Dateiübertragung fertiggestellt ist. Ich möchte aber, dass beim beenden eventuell laufende Übertragungen abgebrochen werden und sich das Programm sofort beendet.


Außerdem noch zwei andere Dinge: Im Programm gibt es einen Button, der den Download startet. Nach Fertigstellung soll dann ein Windows-Explorerfenster mit dem Download geöffnet. Ich habe das jetzt mit einer Schleife gemacht, die folgendermaßen aussieht:

 while(not ftpload.terminated) do application.ProcessMessages; Danach kommt dann der Aufruf zum Öffnen des Explorers. Vielleicht als kurzen Hinweis dazu, der Thread zerstört sich nicht selbst, und die boolvariable terminated setze ich im OnTerminate des Threads. Das funktioniert an sich, unschönerweise bewirkt die Schleife aber eine 100% CPU Auslastung. Ich dachte immer, Windows blockiert den Messageloop immer automatisch, damit das nicht passiert?
Ich kann den Explorer-Aufruf leider nicht aus dem Thread machen, weil ich zusätzlich dazu nach dem Download auch noch einen Eintrag in eine Datenbank machen muss. Und ich weiß nicht, ob ich auf eine ZEOS-Connection aus 2 Threads gleichzeitig zugreifen darf.


Zweites Problem ist, man könnte jetzt ja theoretisch ein weiteres Mal auf den Button klicken. Wenn der Thread jetzt noch läuft, soll ein Hinweis kommen, in dem man auswählen kann ob man den Thread beenden möchte, oder ob er weiterlaufen soll. Dazu ist ein MessageDlg drin, der beim Klicken auf Ja die terminate-Prozedur meiner TThread-Klasse aufruft. Leider beendet das aber den Thread nicht x) Ich schätze, hier ist das das gleiche Problem wie wenn man das gesamte Programm beenden möchte. Indy scheint den Thread so zu blockieren, dass er auf nichts anderes mehr reagiert.

Wie kann ich das Problem lösen? Vielen Dank für eure Hilfe!
  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 00:42 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