Hello les pros

J'essaie de gérer correctement la manipulation de bitmaps en dehors du main thread, mais je me heurte à des bugs que j'ai du mal à comprendre.
Ancien accro au Application.processmessages (pas taper), j'essaie de me soigner.

Comme je découvre le multithreading, je souhaite démarrer simple. Mon but est principalement de ne pas bloquer l'UI pendant des traitements longs de bitmaps et potentiellement de paralléliser quelques routines.

La solution que j'utilise est toute bête :
  • Je crée un Anonymous thread
  • Je crée mon Tbitmap
  • Je modifie le bitmap dans le AnonymousThread
  • Si j'ai besoin d'accéder à un élément de l'UI, je fais un TThread.Synchronize
  • Si je dois utiliser le TCanvas de mon bitmap, je fais aussi un TThread.Synchronize (j'ai lu que le canvas d'un bitmap n'est pas threadsafe)

Sur Windows, tout fonctionne bien, à l'exception d'un CopyFromBitmap qui plante mon appli si je le mets à l'intérieur d'un TThread.Synchronize...
Sur MacOS, ça marche aussi sur certaines versions, mais ça plante sur Ventura (l'UI est lente, les images ne s'affichent pas toujours et au final l'appli se freeze).

Avez-vous des idées sur la meilleure manière de travailler sur des bitmaps dans un autre thread que le thread principal ?

Cordialement,

David