Die Aussage von Marco Cantu dazu lautet "
TBitmap
ist niemals für die Verwendung ausserhalb des MainThreads gedacht gewesen." (egal ob
VCL/FMX).
Von daher ist diese Erkenntnis nicht wirklich neu oder überraschend.
Vorausgesetzt man geht davon aus dass die offizielle Doku nicht reicht und man zusätzlich immer Community-Foren, Twitter, Google und sonstwas-Accounts von bestimmten Leuten folgen muss um die Bibliotheken fehlerfrei verwenden zu können.
Wieso das denn jetzt?
Mir war eigentlich schon immer bewusst, dass alles was mit
VCL zu tun hat
nicht threadsafe ist. Analog gilt das auch für
FMX.
Wenn man nicht weiß, wozu die Klasse XY nun gehört, dann schaut man sich den Namespace an und weiß sofort, wo man
kein threadsafe erwarten kann
Delphi-Quellcode:
Vcl.Graphics.TBitmap
// <- Vcl davor => NEIN
FMX.Graphics.TBitmap
// <- FMX davor => NEIN
Prinzipiell ist eigentlich alles erst einmal als
nicht threadsafe anzusehen. Die Dokumentation sollte es explizit hervorheben was threadsafe ist und nicht umgekehrt, sonst sieht man vor lauter
nicht threadsafe den Thread nicht mehr.
VCL und
FMX sind zudem immer noch als
MainThread-Affin anzusehen (darum geht es hier eigentlich und nicht um threadsafe)