Threads
-
Hallo
ich habe vor kurzem hier im Forum erfahren, dass ich einen Ablauf verschiendenster Abfragen usw mit nem Thread machen kann.
Leider fehlt mir dazu das wissen - weiss jemand gute Anleitungen ?! Bzw kann mir jemand sagen, wie ein thread gestartet wird (automatisch oder muss ich ihn starten) läuft er einmal durch oder kann ich ne Endlosschleife machen (hält dann das restliche Programm jedesmal an ?Danke im voraus
Bernd
-
Schau dir mal in der Borlandhilfe die Hilfe zu TThread an.
Habe mich heute auch zum ersten mal mit dem Thema beschäftigt... ist ganz interessant.
-
hallo,
erzeuge per assi (datei neu -> objectgalerie) ein neues gerüst für den thread. die methode TThread::Execute() ist quasi das hauptprogramm des thread, das solange durchlaufen wird, bis der thread terminiert oder pausiert wird. starten tut man den thread durch erzeugen der threadinstanz:
MyThread = new TThread(false); //durch übergabe des parameters kann man steuern, ob der thread sogleich gestartet wird, oder ob nur eine instanz erzeugt wird. MyThread = new TThread(true); //erzeugt nur thread-instanz. MyThread->Resume(); //startet den thread. //will man den thread pausieren lassen: MyThread->Suspend(); //will man eine gewisse routine durchlaufen wenn der thread terminiert wird: MyThread->OnTerminate = ThreadOnTerminate; //weißt man ihm eine routine zu, die dann ausgeführt wird, sobald das ereignis OnTerminate eintritt. //im konstruktor des threads kann man angeben ob der thread bei terminierung auch gleich freigegeben werden soll: __fastcall TMyThread::TMyThread(bool CreateSuspended) : TThread(CreateSuspended) { FreeOnTerminate = true; } //die methode TThred::Execute() wird solange durchlaufen bis der thread terminiert wird, da kann dann etwa sowas dring stehen: void __fastcall TMyThread::Execute() { FCount = 1; do { Synchronize(GuiElements); //synchronize ist für die synchronisation da. FCount++; } while (FCount <= 200000); } //alles was auf vcl-elemente zugreift sollte in einer methode durchgeführt werden (hier GuiElements), diese wird dann der Methode Synchronize übergeben. dies ist sehr wichtig, damit alle zugriffe etc. synchron mit dem hauptthread der vcl verlaufen...
mfg
murph