![]() |
AW: OmniThreadLibrary: Was ist für meine Anforderung der richtige Weg? Welchen Contai
Hallo Codehunter,
Zitat:
Ich programmiere grundsätzlich nur hobbymäßig :) Klar, auch die Firma hat dadurch den Nutzen, da ich diverse Anforderungen dann umsetzen kann. |
AW: OmniThreadLibrary: Was ist für meine Anforderung der richtige Weg? Welchen Contai
So hab ich vor 20 Jahren auch mal angefangen :-) Nur wars bei mir ein Outlook-Express-Ersatz. Oder noch früher, eine Warenwirtschaft in Amiga Basic. (Rückblickend eine scheußliche IDE. Wer die nur hergestellt hat... ^^)
|
AW: OmniThreadLibrary: Was ist für meine Anforderung der richtige Weg? Welchen Contai
Zitat:
|
AW: OmniThreadLibrary: Was ist für meine Anforderung der richtige Weg? Welchen Contai
Also der A500 war mein erster eigener. 1991 war das. Davor gabs an der Schule noch den
![]() |
AW: OmniThreadLibrary: Was ist für meine Anforderung der richtige Weg? Welchen Contai
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: :oops:
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:
Ihr habt bestimmt ein paar gute Ideen, oder?
DL.Clear;
TL.Clear; -> Hier kommt es zu Exceptions, weil ich den laufenden Threads die Threadliste plattmache. |
AW: OmniThreadLibrary: Was ist für meine Anforderung der richtige Weg? Welchen Contai
Globale boolesche Variable bauen, die im Mainthread vor dem Start des nächsten Threads abgefragt wird. Beim Start deines Threadstapels setzt du die auf FALSE und bei Klick auf deinen Stopbutton auf TRUE.
EDIT: Mir ist eben zufällig noch etwas sehr schönes in die Hände gefallen. ![]() |
AW: OmniThreadLibrary: Was ist für meine Anforderung der richtige Weg? Welchen Contai
Zitat:
![]() Oder Omnithread verwenden ... Beispiele zum Terminieren von Tasks ![]() 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 :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:08 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