Einzelnen Beitrag anzeigen

Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Threadübergreifende Bitmap

  Alt 1. Okt 2015, 23:52
Hallo FirstTry, Willkommen in der DP.

drücke ich auf start, sehe ich die Zeit so laufen wie sie soll. Bewege ich aber die Maus über die Form, so bleibt die Zeit stehen (nicht der Thread, wurde getestet).
Vorweg: Ich habe das angehängte Programm nicht ausgeführt, sondern mir nur den Code angeschaut.

Danach wundert es mich eigentlich mehr, dass es am Anfang, bevor du die Maus über die Paintbox bewegst, laut deiner Aussage noch funktioneren soll. Denn du updatest zwar das TBitmap im Speicher (FBild), aber ich kann in deinem Code nirgends eine Stelle finden, in der du ein Neuzeichnen der Paintbox veranlasst. Somit wird das Bitmap zwar fleißig aktualisiert, aber vergammelt dann im Speicher, ohne dass du es jemals zu Gesicht bekommst.

Dass der Speicherverbrauch explodiert, kann ich auch nicht nachvollziehen. Grundsätzlich können solche Dinge schon passieren, wenn man auf GDI-Objekte wie TBitmap oder TCanvas fälschlicherweise mit mehreren Threads parallel zugreift. Aber da du Synchronize verwendest, sollte es hier eigentlich zu keinen Problemen kommen.

Hast du das Problem wirklich mit dem Projekt, so wie du es angehängt hast, reproduziert?

Synchronize ist also nicht blockierend, ist das das Problem ?!
Eigentlich müsste Synchronize blockieren.

Bitte nicht irgendwas mit Sleep hinfrickeln! Selbst wenn es für eine Zeit lang zu funktionieren scheint, irgendwann fliegt es dir dafür so richtig um die Ohren.
  Mit Zitat antworten Zitat