AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Delphi OmniThreadLibrary: Was ist für meine Anforderung der richtige Weg? Welchen Container?
Thema durchsuchen
Ansicht
Themen-Optionen

OmniThreadLibrary: Was ist für meine Anforderung der richtige Weg? Welchen Container?

Ein Thema von juergen · begonnen am 15. Okt 2017 · letzter Beitrag vom 27. Okt 2017
 
Benutzerbild von bytecook
bytecook

Registriert seit: 6. Aug 2010
Ort: Dornbirn
151 Beiträge
 
Delphi 11 Alexandria
 
#16

AW: OmniThreadLibrary: Was ist für meine Anforderung der richtige Weg? Welchen Contai

  Alt 27. Okt 2017, 09:37
Nachdem die Threads jetzt so schön laufen, wollte ich meiner Applikation noch ein Feature (sprich Button) spendieren, um laufende Threads vollständig abzubrechen und keine neuen mehr zu starten.
Geht anscheinend nicht so, wie ich mir das gedacht habe:

Delphi-Quellcode:
  for I := 0 to TL.Count - 1 do
  begin
    T := TL[I];
    T.Terminate;
  end; -> Der Teil ist funktionslos, bricht also nix ab, die Threads laufen munter weiter, wahrscheinlich weil man nie den richtigen Zeitpunkt erwischt, bevor ein Thread an seinem Ende den nächsten noch suspendierten startet...
Delphi-Quellcode:
  DL.Clear;
  TL.Clear; -> Hier kommt es zu Exceptions, weil ich den laufenden Threads die Threadliste plattmache.
Ihr habt bestimmt ein paar gute Ideen, oder?
nach T.Terminate noch ein T.WaitFor verwenden? Waitfor kehrt erst nach Beendigung des Threads zurück.
http://docwiki.embarcadero.com/RADSt...f%C3%BChrt_ist
Oder Omnithread verwenden ...
Beispiele zum Terminieren von Tasks
http://otl.17slon.com/book/chap05.ht...ks-termination
Ich arbeite hauptsächlich mit Ableitungen von TOmniWorker in Verbindung mit IOmniTaskControl, intern arbeitet dort die Verwaltung mit Events (DSiWaitForTwoObjects),
die Worker werden mittels IOmniTaskControl.Terminate() sauber aufgelöst (.Terminate(1000) killt den Thread nach 1000ms, würde ich aber nicht machen). Wichtig für mich, da manche meiner Komponenten-Tasks weitere Tasks erzeugen...

@Codehunter ... das ist doch mal ein nettes Video - geb ich gleich mal an meinen Azubi weiter
Peter
Was mache ich, wenn ein Bär meine Frau angreift?
Nichts. Er hat sie angegriffen, soll er doch selber sehen, wie er sich verteidigt.

Geändert von bytecook (27. Okt 2017 um 10:12 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz