Frage zu TThread->Terminate()



  • Hallo zusammen,
    ich habe eine kleine Verständnisfrage zum Objekt TThread. Warum wird eigentlich in so vielen Beispielen im Web im OnTerminate Event noch zusätzlich Terminate() aufgerufen? Dieses Event setzt doch erst ein, wenn der Thread das Terminate flag gesetzt bekommen hat. Ist dich nicht doppelgemobbelt?

    Zudem sollte der Cleanupcode für Threads doch eher im Destruktor der Threadklasse abgehandelt werden, auch wenn Terminate() nichts mit Cleanup im eigentlichen Sinne zu tun hat.

    //Irgendwo im Private der .h
    TThread *mythread;
    //---------------------------------------
    //Main
    mythread = new MyThreadClass(false);
    mythread->FreeOnTerminate = true;
    mythread->OnTerminate = TerminateThread;
    //---------------------------------------
    __fastcall TClass::TerminateThread(Object *Sender)
    { 
       mythread->Terminate();
    } 
    //-------------------------------------
    


  • Oder hat es eher damit zu tun, falls das Hauptprogramm mitten in der Threadausführung geschlossen wird, von dieser Seite her Sorge getragen wird, dass sich der Thread durch das terminated signaling noch sauber beenden kann?


Anmelden zum Antworten