Thread erstellen
-
Möchte mit dem Borland Builder einen Thread erstellen, das habe ich auch indem ich auf Datei -> Neu -> Thread gegangen bin. Danach liefert mir Boland folgenden Code:
__fastcall animation::animation(bool CreateSuspended) : TThread(CreateSuspended) { } //--------------------------------------------------------------------------- void animation::SetName() { THREADNAME_INFO info; info.dwType = 0x1000; info.szName = "zusatz"; info.dwThreadID = -1; info.dwFlags = 0; __try { RaiseException( 0x406D1388, 0, sizeof(info)/sizeof(DWORD),(DWORD*)&info ); } __except (EXCEPTION_CONTINUE_EXECUTION) { } } //--------------------------------------------------------------------------- void __fastcall animation::Execute() { SetName(); //---- Hier den Thread-Code plazieren---- }Wie kann ich jetzt diesen Thread im meiner Main-Funktion starten und wo muss ich den Code hinschreiben, den der Thread ausführen soll. Achso vielleicht noch zu erwähnen es handelt sich bei meinem Programm um eine Konsolenanwendung.
Ich hoffe mir kann jemand weiterhelfen, finde hier im Forum nichts.
-
Hallo bronstein,
__fastcall animation::animation(bool CreateSuspended) : TThread(CreateSuspended) { }ist der Konstruktor den du mit new benutzen mußt.
TThread animat; animat = new animation (true);Execute und Beispiele zu der Funktionsweise eines Thread findest du in der Hilfe wenn du nach TThread suchst. Ein Beispiel für Execute kann sein:
void __fastcall TSendPosFunk::Execute() { int ret = 0; // Fehlercode der Funktionen while (!Terminated) // Endlos-Schleife des Thread { // Warten auf die Ereignisse ret = WaitForMultipleObjects(2, FluPosEvent, False, INFINITE); // Ein Thread-Ereignis ist aufgetreten? switch (ret - WAIT_OBJECT_0) { case FluPos_Event: { Synchronize(BearbeiteEreignis); // Ereignis bearbeiten break; } // Thread beenden case FluPos_End: { Terminate(); // beenden des Thread break; } default: { // Fehler in den Logfile schreiben ErrText->msgErrorInt (2, IFEHLER, "[TSendPosFunk::Execute]", " Ein unbekanntes Ereignis ist aufgetreten!"); break; } } // Ende: switch (ret - WAIT_OBJECT_0) } // Ende: while (!Terminated) } // Ende: FunktionGestartet wird ein mit Resume oder mit der Variablen "CreateSuspended" im Konstruktor.
Viel Erfolg
Evi48