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: Funktion
    

    Gestartet wird ein mit Resume oder mit der Variablen "CreateSuspended" im Konstruktor.

    Viel Erfolg
    Evi48


Anmelden zum Antworten