Forum: Sonstige Fragen zu Delphi
by Der schöne Günther,
23. Mär 2016
Ja, in einem Task kann ich prüfen ob der "Current" Thread nicht eigentlich beendet werden soll
procedure proc();
begin
repeat
Beep();
TTask.CurrentTask.CheckCanceled(); // Bringt nichts
if TThread.Current.CheckTerminated() then Break; //Das hier bringt's
Sleep(500);
until False;
Forum: Sonstige Fragen zu Delphi
by Der schöne Günther,
23. Mär 2016
Natürlich sollte ich das. Mich ärgert halt ziemlich dass, sollte ich in einem Task einen dummen Fehler machen, er nie terminiert, man die Anwendung nur noch über den Taskmanager abschießen kann.
In System.Threading.pas steht sogar // Check each thread to see if it is already marked for termination and/or if it is hung., aber geprüft wird da gar nichts. Einfach Destroy() auf allen Threads...
Forum: Sonstige Fragen zu Delphi
by Der schöne Günther,
16. Jan 2015
Habe ich auch schon längst :thumb:
Ich wollte ja nur wissen "Kann System.Threading den bestehenden Kram ersetzen?". Die Antwort war nein. :spin2:
Forum: Sonstige Fragen zu Delphi
by Der schöne Günther,
15. Jan 2015
Alles klar. Abseits meiner spannenden Geschichte finde ich es trotzdem etwas doof, selbst ständig auf "Cancelled?" prüfen zu müssen, mir wäre lieber gewesen, der Pool (oder wer auch immer) killt den entsprechenden Thread einfach wenn man von außen sagt "Schluss jetzt"
Vielleicht habe ich auch einfach nur ein verdrehtes Weltbild.
Nicht auszudenken, was ich als Politiker anstellen würde...
Forum: Sonstige Fragen zu Delphi
by Der schöne Günther,
15. Jan 2015
Meine Geschichte zu erzählen, warum dieser Aufruf sich aufhängen kann und warum ich damit umgehen können muss führt zu weit.
Ich wollte noch nicht einmal Zauberpulver sondern nur wissen, wie man einen Task hart abbrechen kann. Und wie man einen Threadpool schließt wenn ein andauernder Task da drin ist.
Forum: Sonstige Fragen zu Delphi
by Der schöne Günther,
14. Jan 2015
Es ist im Endeffekt die gleiche wie eine meiner ersten Fragen hier:
http://www.delphipraxis.net/173890-wie-beende-ich-einen-tthread-freundlich-und-notfalls-gewaltsam.html
Nur diesmal auf System.Threading bezogen:
Kann ich einen Task, im worst case-Szenario, richtig abbrechen? Richtig tot machen?
Ein einfaches Cancel() setzt vielleicht im Task-Objekt ein Flag, aber terminiert wird der...