AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Funktionsweise Thread.WaitFor
Thema durchsuchen
Ansicht
Themen-Optionen

Funktionsweise Thread.WaitFor

Ein Thema von SyntaxXx · begonnen am 13. Aug 2014 · letzter Beitrag vom 12. Jan 2021
Antwort Antwort
Benutzerbild von TERWI
TERWI

Registriert seit: 29. Mär 2008
Ort: D-49626
381 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Funktionsweise Thread.WaitFor

  Alt 11. Jan 2021, 13:15
Ich hole diesen etwas betagten Thread noch mal hoch, weil:
Prinzipiell selbes Prob, nur hab ich ges. 5 Threads, auf dessen Erledigung ich warte und die weitere Prorammausführung davon abhängt, wer wann fertig ist.

Ablauf in etwa so:
- Zum Prog-Begin starten 3 Threads um Daten zu lesen & zu evaluieren.
(Kann im worst-case bis zu 10 Sekunden dauern !)
- Proggie soll derweil weiter initialisieren, die GUI aufbauen, den User grüßen, usw.

Warte-Punkt 1)
Thread-1 kann, muss aber noch nicht bis dahin fertig sein - d.h. auf den MUSS gewartet werden, weil alles weitere von dessen Daten abhängt.
Wenn fertig, erfolgen ab hier weiter GUI-Init's und 2 weitere Threads starten

Warte-Punkt 2)
Wie unter 1, Thread-2 fertig ? Wobei hier datenabhgig eine Meldgugng angzeigt und entspechend reagiert werden muss.

Warte Punkt-3)
Das warten auf Thread-3 ist nicht zwingend zeitrelevant (und dauert i.d.R. ach am längsten),
es wäre jedoch "nice to have" umgehend nach dessen Ende eine weitere Meldng zu zeigen und das Display mit neuen Daten upzudaten.


Meine Idee:
Wenn hier jeder Thread seinen eigenen Event nach Ablauf feuert, wie kann ich da in der Main-Form darauf reagieren ? (Hier spez. Thread 1 + 2 in einer Loop)
Get das evtl. mit "WaitForSingleObject" ?

Für Thread-3 könnte ich auch gut mit einer CallBack-procedure leben.

Wichtig ist allgemein, dass das Proggie nicht bei Fehlern oder langen Lesezeiten hängt und weiter bedienbar ist.
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
2.044 Beiträge
 
Delphi 12 Athens
 
#2

AW: Funktionsweise Thread.WaitFor

  Alt 11. Jan 2021, 20:20
Thread 1 2 und 3 kannst du Vermutlich über IFuture abbilden.
Du startest die Futures und
machst deinen GUI-Aufbau...bis irgendwo in dem Verlauf die Werte der Futures ausgelesen werden und der GUI-Aufbau wartet dann solange bist die Werte bereittehen. Das warten passiert da wo die Werte der Furures gelesen werden.

Für endliche Arbeitslasten nutze ich die Klassen aus AnonThread.pas
https://blogs.embarcadero.com/cross-...-notification/
Ich brauche diese Klassen um die Oberflächen von Windows und Mobilen Anwendungen Responsive zu halten. Es ist recht komfortabel die Logick die im thread ausgeführt wird in das OnClick Ereignis des Buttons zu inlinen und auch die Erfolgs- oder Misserfolgsmeldung zu inlinen.
Andreas
Nobody goes there anymore. It's too crowded!

Geändert von QuickAndDirty (11. Jan 2021 um 20:34 Uhr)
  Mit Zitat antworten Zitat
shebang

Registriert seit: 7. Feb 2020
149 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Funktionsweise Thread.WaitFor

  Alt 12. Jan 2021, 12:18
Möchtest du unbedingt mit WaitFor arbeiten oder wäre eine Lösung mit Messages auch akzeptabel?
Sobald ein Thread fertig sagt er der GUI mit PostMessage Bescheid und diese kann entsprechend reagieren.
Laut deiner Beschreibung sind Thread 1 und 2 nicht voneinander abhängig, also wäre es ok wenn #2 schneller fertig ist als #1.
  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 12:26 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