Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi FTP hängt sich auf (https://www.delphipraxis.net/92529-ftp-haengt-sich-auf.html)

napsterxx 22. Mai 2007 15:40

Re: FTP hängt sich auf
 
habe hauptthread und wie ändere ich den? ich benutze indy 10

Klaus01 22. Mai 2007 18:34

Re: FTP hängt sich auf
 
Zitat:

Zitat von napsterxx
habe hauptthread und wie ändere ich den? ich benutze indy 10

Den Haupthread kannst Du nur ändern, wenn Du Deine idFTP Instanzen in Threads auslagern würdest.

Was vielleicht auch noch helfen könnte, daß Dein Anwendung nicht einfriert.
Ist im onWork application.processMessages aufzurufen.

Grüße
Klaus

napsterxx 22. Mai 2007 18:40

Re: FTP hängt sich auf
 
THX alter damit gehts

napsterxx 22. Mai 2007 19:21

Re: FTP hängt sich auf
 
Was ich gerade gemerkt habe. Es geht, die anwendung freezed nicht, aber wenn ich wo draufklicken will, wird der download beendet;

SirThornberry 23. Mai 2007 14:01

Re: FTP hängt sich auf
 
ohne Quelltext können wir nur erraten woran es liegt.

Udontknow 23. Mai 2007 17:35

Re: FTP hängt sich auf
 
Hallo!

... Das ist das Problem mit Application.ProcessMessages, es ist eben nicht wirklich Parallelbetrieb.

Während du downloadest, rufst du innerhalb OnWork Application.ProcessMessages auf, und veranlasst Delphi damit, die Nachrichtenverarbeitung anzustossen, damit z.B. ButtonClick-Ereignisse ausgeführt werden. Wenn du nun aber z.B. währenddessen ein Fenster per ShowModal öffnest, unterbrichst du damit den Download, denn du befindest dich noch immer im Ereignis OnWork, und zwar von in OnWork aufgerufenen Subroutinen (OnWork->ProcessMessages->ButtonClick->Form.ShowModal usw.). Wahrscheinlich kommt es dann irgendwann zum Timeout auf der Gegenseite.

Mein Tipp: Wirklich das ganze in einen richtigen Thread auslagern.

Cu,
Udontknow

supermuckl 24. Mai 2007 20:20

Re: FTP hängt sich auf
 
korrekt.

mache eine neue thread unit

baue das eine create procedure ein, mit der du die informationen an den thread übergibst, die du für den download benötigst (also quelle ziel usw)

mache die thread unit in der main unit oder halt unit1 bekannt

im thread (also in der threadunit) musst du nur noch im onexecute einen idftpclient instanzieren, die datei damit downloaden
und alles wieder freigeben, was instanziiert wurde (sonst speicherlecks)

den thread dann einfach über den downloadbutton schlummernd createn und mit den informationen füllen
danach erst starten (threadvariable.resume;)
und dann rennt der thread im hintergrund und ladet runter - danach beendet er sich wieder oder du brichst ihn manuell ab mit threadvariable.terminate;

das ist so ziemlich alles was du machen musst
allerdings halt nicht ganz so einfach als anfänger -> thread tutoruals suchen oder vorhandene demos von den indys auseinander nehmen usw

Jelly 24. Mai 2007 20:34

Re: FTP hängt sich auf
 
Vielleicht kuckst du dir mal von meiner Seite die TInternetUpdate Komponente an, denn darum geht es dir ja wohl, wenn ich deine Frage in diesem Thread mal reinhänge.

Zum einen macht die genau das was du haben willst, läuft threadsicher und du kannst eventuell was im Code über Threads lernen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:10 Uhr.
Seite 2 von 2     12   

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