AW: Überschreiben von TThread.Terminate
@jfheins: Mist, naja virtuelle Biere sind ja recht günstig.
Aber dann hat TThread echt einen Designfehler (also noch einen mehr). Denn wo kann ich sonst zum Terminate noch etwas anfügen? Ich benutze diese Methode (hatte mich anfangs auch gewundert warum nicht virtuell, und mir dann meine, diese, Erklärung zurechtgelegt) recht häufg, wenn zum Beispiel mein Thread schläft auf Grund von:
@MatthiasR Menu - Projektoptionen -> Debug-DCUs verwenden |
AW: Überschreiben von TThread.Terminate
Die Prozedur Terminate setzt nur .Terminated auf true.
Ob und wie der Thread das nun intern beachtet ist egal. Terminate/Terminated beendet die Threadverarbeitung nicht. Terminated sagt nur "Hallo lieber Thread, würdest du dich bitte mal beenden?" Also eigentlich sehe ich demnach auch keinen Grund, warum dieses überschreibar sein soll, da man es ja Threadintern dennoch anders behandeln kann (z.B. einfach ignorieren oder mit was Anderem verknüpfen). Es muß ja nicht sein, daß man alles virtuell macht und so die VMT unnütz vergrößert. - bei WaitForSingleObject und Co. läßt sich auch noch eine weitere Abbruchbedingung einbauen. - ReadFile ließe sich Asynchron verarbeiten - usw. |
AW: Überschreiben von TThread.Terminate
Zitat:
Zitat:
|
AW: Überschreiben von TThread.Terminate
Zitat:
Zum Glück hat ein Thread ein OnTerminate Event, wie schade nur, dass das erst aufgerufen wird, nachdem der Thread terminated wurde, und nicht zu dem Zeitpunkt, wo Terminate aufgerufen wurde. Wie man es auch dreht und wendet, es ist schlecht, dass Terminate nicht virtual ist. |
AW: Überschreiben von TThread.Terminate
Es ging Frank um die Tatsache, dass die Methode nur das Feld setzt und nicht den Thread beendet. Diese Funktionalität gehört in den Threadcode ( Reagieren auf die Änderung von .Terminated)
|
AW: Überschreiben von TThread.Terminate
Zitat:
Zitat:
|
AW: Überschreiben von TThread.Terminate
@himi
Steve hat ja schon alles gesagt, noch Ergänzungen: Zitat:
Zitat:
Zitat:
Zitat:
Ich nutze es ständig weil es eben nicht anders geht, ansonsten kann ich auch gleich jedwedes Threading mir sparen. |
AW: Überschreiben von TThread.Terminate
Zitat:
Bei einer TThread-Variable würde wieder das "Alte" aufgerufen. Zitat:
Zitat:
Wie, womit wird denn die Datei runtergeladen? Viele der Wege bieten es ja an, daß man wärend des Downloads Ereignisse bekommt oder wo man stückchenweise in einen Puffer lesen kann und dann dazwischen die Abbuchbedingung mit einbindet. |
AW: Überschreiben von TThread.Terminate
Zitat:
Zitat:
|
AW: Überschreiben von TThread.Terminate
Du kannst nach wie vor die Vorgängermethode aufrufen. Mach ich ja, wie gesagt, auch ständig.
Du kannst dir ja mal bspw. mein DosCommand ansehen: http://forum.delphi-treff.de/showthr...783#post201783 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz