Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
Delphi 10 Seattle Enterprise
|
AW: VCL not thread save
6. Mär 2014, 15:19
Wofür muss ein UI-Framework (bzw. UI im Allgemeinen) threadsafe sein?
Für die Kommunikation mit dem Benutzer reicht ein Thread.
Die Daten selber liegen in irgendwelchen Daten-Objekten und werden bei einer Änderung im UI dargestellt oder Daten vom UI dort hineingeschrieben.
Der Zugriff auf diese Daten-Objekte, der muss threadsafe sein (wenn multithreading).
Wenn die Rückmeldungen von den Threads zu häufig passieren, dann schaltet man einfach einen Timer dazwischen, der die eigentliche Aktualisierung des UI bremst (throttle) und diese Aktualisierung nur alle x Millisekunden zulässt.
Das menschliche Auge kann 25 Bilder pro Sekunde erfassen, so dass 40ms als throttle ein guter Ausgangswert ist. Allerdings werden auch 100ms gefühlt nicht wahrgenommen.
Und ob der Benutzer einen Mehrwert hat, wenn die Informationen über den Schirm rasen oder sich die Werte extrem schnell verändern glaube ich auch nicht, so dass also auch kein Informationsverlust entsteht.
Wenn bestimmte Werte wichtig sind, dann lässt man diese nicht durch die Anzeige den User kontrollieren, sondern durch die Anwendung und signalisiert, dass die Situation X eingetreten ist.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
|