AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TThread, TTask usw. oder OmniThreadLibrary?

Ein Thema von Glados · begonnen am 19. Okt 2017 · letzter Beitrag vom 20. Okt 2017
Antwort Antwort
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.081 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: TThread, TTask usw. oder OmniThreadLibrary?

  Alt 20. Okt 2017, 08:45
Warte doch gar nicht, sondern lass dich vom fertigen Thread benachrichtigen!

Beschäftige dich mal hiermit:
http://docwiki.embarcadero.com/Libra...ad.OnTerminate
Vllt ist für das warten das OnTerminate-Event von TThread das was du brauchst. Du erstellst den Thread, weist das Event zu, startest den Thread und der Button-Klick ist beendet.
Wenn dann der Thread fertig ist landest du automatisch in deinem Eventhandler für OnTerminate und kannst abschließende Sachen machen.
Auf diese Art und Weise bekäme ich die while-Schleife weg. Gute Idee! Werde ich heute Abend mal testen, nachdem ich einen nervigen Bug entfernt habe (hoffentlich).

Das nächste Mal schreibe ich einfach in großer, rot blinkender Schrift...
Man muss auf die Links auch klicken, lesen und verstehen.
  Mit Zitat antworten Zitat
Glados
(Gast)

n/a Beiträge
 
#2

AW: TThread, TTask usw. oder OmniThreadLibrary?

  Alt 20. Okt 2017, 09:59
Zitat:
Man muss auf die Links auch klicken, lesen und verstehen.
Ich kenne OnTerminate. Ich habe oben auch extra geschrieben, dass ich mich benachrichtigen lassen kann, sobald ein Thread beendet ist bzw. sobald der letzte im Multitasking beendet ist

Das Problem ist aber repeat-until. Denn irgendwo muss ich ja warten bevor der nächste Job gestartet wird.
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.081 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: TThread, TTask usw. oder OmniThreadLibrary?

  Alt 20. Okt 2017, 10:20
Zitat:
Man muss auf die Links auch klicken, lesen und verstehen.
Ich kenne OnTerminate. Ich habe oben auch extra geschrieben, dass ich mich benachrichtigen lassen kann, sobald ein Thread beendet ist bzw. sobald der letzte im Multitasking beendet ist
Unwahrscheinlich, denn dann hättest du nicht dieses Konstrukt mit der while-Schleife.
Zum Verständnis: Mein Beitrag ist Nummer #5 hier im Thread.

Das Problem ist aber repeat-until. Denn irgendwo muss ich ja warten bevor der nächste Job gestartet wird.
Es wäre am Einfachsten, dass du ein Beispiel-Projekt hier hoch lädst.
Natürlich musst du nicht konkret zeigen was du du tust.
Eine Art Ersatz-Job (Primzahlen berechnen, Sleep, etc.) tut es auch.
Anhand dessen kann man die konkreten Lösungsstrategien entwickeln.
  Mit Zitat antworten Zitat
Glados
(Gast)

n/a Beiträge
 
#4

AW: TThread, TTask usw. oder OmniThreadLibrary?

  Alt 20. Okt 2017, 10:24
Zitat:
Unwahrscheinlich, denn dann hättest du nicht dieses Konstrukt mit der while-Schleife.
Es ist sogar sehr wahrscheinlich, dass ich OnTerminate kenne.

Ich habe insgesamt 2 Schleifen, wie ich oben irgendwie versucht habe zu erklären. Ich habe jetzt aber keine Lust mich zu streiten
Aber eines weiß ich: ich kann mein Problem nicht korrekt erklären und ich weiß genau was OnTerminate macht.

Zitat:
Ich bin da wenig versiert. Ich würde mir jetzt einfach einen MessageHandler bauen und von überall dort wo ich auf die VCL zugreife, schicke ich dann Messages an den Handler. Der Handler würde dann auf die VCL zugreifen. Ist aber sicher mehr als falsch.
So in etwa aktualisiere ich bereits eine Progressbar aus einem Thread heraus.
Ist das da oben denn überhaupt der richtige Ansatz, um auf VCL-Komponenten aus einem Thread heraus zuzugreifen?

Geändert von Glados (20. Okt 2017 um 15:33 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 01:28 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-2025 by Thomas Breitkreuz