- Kern des Threads ist die Execute-Methode, diese wird nach Starten des Threads abgearbeitet
void __fastcall MyThread::Execute()
{
// Hier steht der Code der vom Thread abgearbeitet wird
}
Alle Methoden, die im Thread aufgerufen werden und auf VCL-Elemente zugreifen, sollten der Methode Synchronize übergeben werden. Dies ist sehr wichtig, damit alle Zugriffe etc. synchron mit dem Hauptthread der VCL verlaufen:
Synchronize(DieMethode);
man kann im Konstruktor angeben, ob der Thread sofort nach dem Erzeugen des Objektes losläuft, oder ob der Thread zunächst ruht:
MyThread = new TThread(true); // Thread ist erstmal stillgelegt (suspended = true)
oder
MyThread = new TThread(false); // Thread läuft sofort los
Thread-Priorität festlegen:
MyThread->Priority = Prioritäts-Stufe // Prioritäts-Stufe kann sein tpIdle, tpLowest, tpLower, tpNormal, tpHigher, tpHighest, tpTimeCritical
Thread Starten/Anhalten:
MyThread->Resume(); // startet den Thread
MyThread->Suspend(); // hält den Thread an
Thread beenden:
MyThread->Terminate();
will man eine gewisse Routine beim Beenden des Threads durchlaufen, muss man diese dem OnTerminate-Ereignis des Threads zuweisen:
MyThread->OnTerminate = ThreadOnTerminate; // dem Thread die Methode ThreadOnTerminate zu, die ausgeführt wird, sobald das Ereignis OnTerminate eintritt
Thread nach dem Beenden gleich freigeben:
FreeOnTerminate = true; // im Konstruktor des Threads oder nach der Erzeugung kann man angeben ob der Thread bei Terminierung freigegeben werden soll