Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Threadproblem... (https://www.delphipraxis.net/23182-threadproblem.html)

Martin W 30. Mai 2004 12:09


Threadproblem...
 
Hi,

ich bin´s nochmal... Also ich hab noch ein Problem. Und zwar läd mein Programm beim Start eine ca. 1 MB große Datei herunter... Dafür benutzte ich die HTTP- Komponente von indy.

Während mein programm diese Datei herunterläd sieht mein Programm so aus, als ob es hängenbleiben wäre. Jetzt habe ich mal gehört, das man solche funktionen in ein Thread verlagern kann.

Daraufhin habe ich das Threadtutorial hier durchgearbeitet.

Allerdings habe ich es bis jetzt noch nicht geschafft das es auch in meinem Proggi funktioniert.

Daher meine Frage(n):

a) wie kann ich ein Thread erzeugen, der mit der INDY Http- komponente eine Datei herunterläd ?
b) wie kann ich diesen Thread dann starten
c) wie sag ich meinem Hauptprogramm das der download fertig ist??


Eine Antwort wäre super nett...

Gruß
Martin

Meflin 30. Mai 2004 12:12

Re: Threadproblem...
 
Hi,
das ist nicht so schwer wies aussehen mag:
a) du verlagerst die download routine einfach in eine function, z.B.
Delphi-Quellcode:
function downloadatstartup(p: pointer): LongInt;
begin
//Hier der download
end;
b) Schau mal im sdk nach BeginThread
c) setzte in der obigen funktion eine globale variable auf true o.ä

[edit] ups, stdcall und beginthread vertragen sich glaubich nicht[/edit]

Meflin 30. Mai 2004 12:17

Re: Threadproblem...
 
hier noch ein beginthreadbsp:
Delphi-Quellcode:
ThreadHandle := BeginThread(nil,0,TFNThreadStartRoutine(@threadfunc),@variable,CREATE_SUSPENDED,ThreadID);
ThreadHandle beinhaltet dann das handle des threads
threadfunc ist die function des threads
@variable übergibt dem thread einen pointer auf die variable variable
CREATE_SUSPENDED bewirkt das der thread im angehaltenen zustand erzeugt wird
ThreadID beinhaltet dann die ID des threads
wenn du CREATE_SUSPENDED verwendest muss du den Thread mit ResumeThread(ThreadHandle) fortsetzen!

Martin W 30. Mai 2004 12:32

Re: Threadproblem...
 
Danke, ich werde das alles mal ausprobieren, wenn es geklappt hat geb ich hier noch mal bescheit ;-)

Luckie 30. Mai 2004 14:48

Re: Threadproblem...
 
Und hier gibt es ein Thread-Tutorial: http://tutorials.luckie-online.de


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:06 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