Einzelnen Beitrag anzeigen

QuickAndDirty

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

AW: Verständnisproblem Android synchron/asynchron

  Alt 25. Jul 2021, 10:00
Viele Delphi Events laufen unter Android asynchron. Und viele Änderungen von TComponent Eigenschaften laufen zwar "synchron" aber in dem Sinne, das sie im selben thread passieren , jedoch häufig einfach nur messages auf der Message Queue ablegen. Also werden diese Änderungen erst wirksam wenn App idle ist.
Alles was mit Indy Komponenten zu tun hat erfordert es das du Threads verwaltest! Man Sendet und empängt Daten immer "asynchron" also in einem anderen Thread als dem Haupt-Thread.
Alle eigenen Funktionen und Folge-Funktionen die du aus Events heraus aufrufst könnten in einem anderen als dem Hauptthread laufen! Du musst das ab und an mal überprüfen wenn du ein Event verwendest von dem du nicht weist in welchem thread es läuft. Das ist von daher sowieso notwendig da du unter Android ja sowieso ständig Anonyme threads brauchst um deine App arbeiten zu lassen ohne das der Bildschirm (Hautpthread) einfriert und Android den Benutzer fragt ob er die App abschießen will, weil die ne Sekunde lang nicht auf Betriebsystem Messages reagiert hat.
Intern verwendet Firedac auch Threads wenn es mit Datenbank die über einen Datenbankserver erreichbar sind kommuniziert. Es kann passieren das es zu exceptions innerhalb dieser threads kommt, der code der diese Exceptions abfängt ist dann natürlich auch asynchron.
Eigentlich muss man sich irgendwie immer sorgen darum machen ob Code im Hauptthread oder in einem Nebenthread ausgeführt wird.
Ja ich war auch erstaunt wieviel man Wissen muss um das richtige zu tun....
Andreas
Monads? Wtf are Monads?

Geändert von QuickAndDirty (25. Jul 2021 um 10:14 Uhr)
  Mit Zitat antworten Zitat