![]() |
AW: Threadübergreifende Bitmap
Ich habe selber auch grade so etwas probiert, bekomme ständig "Out of resources". Siehe auch hier:
![]() Ohne im Quelltext zu wühlen, dafür aber die Suchmaschine meines Vertrauens zu befragen, sieht es (zumindest für Laien wie mich) wirklich danach aus, als könnte man mit Vcl.Graphics.TBitmap nur im Hauptthread arbeiten? :| |
AW: Threadübergreifende Bitmap
Zitat:
|
AW: Threadübergreifende Bitmap
Also ich habe in die While-not-terminated-Schleife ein Sleep eingebaut und die Instantiierung des Bitmaps in den Konstruktor des Threads verlagert. Klappt.
|
AW: Threadübergreifende Bitmap
Zitat:
|
AW: Threadübergreifende Bitmap
Nur das Sleep verbessert die Situation. Die Bitmap Instanz kann man erzeugen wo man möchte.
Problematisch ist nicht
Delphi-Quellcode:
an sich, sondern
TBitmap
Delphi-Quellcode:
. Da wird intern etwas Globales verwendet und das fällt einem auf die Füße.
TBitmap.Canvas
Ein
Delphi-Quellcode:
/
TCanvas.Lock
Delphi-Quellcode:
sollte eigentlich helfen, aber leider auch nur bedingt. Irgendwann kommt man in einen Deadlock, wenn das zu schnell von unterschiedlichen Threads erfolgt.
TCanvas.Unlock
Darum bringt die Verwendung von
Delphi-Quellcode:
eine Verbesserung.
Sleep
Wenn man eine echte Lösung haben möchte, dann sollte man
Delphi-Quellcode:
im Thread vergessen und dort auf
TBitmap
Delphi-Quellcode:
von
TBitmap32
![]() Zu dieser Erkenntnis kommt man auch hier: ![]() |
AW: Threadübergreifende Bitmap
Zitat:
Aber was solls mit TBitmap32 oder TPngImage gibts genügend Alternativen. |
AW: Threadübergreifende Bitmap
Zitat:
Delphi-Quellcode:
oder
TBitmap.Scanline
Delphi-Quellcode:
zu arbeiten (was über Scanline geht).
TBitmap.Pixels
|
AW: Threadübergreifende Bitmap
Zitat:
|
AW: Threadübergreifende Bitmap
Zitat:
Da aber Thread und
Delphi-Quellcode:
nicht so richtig zusammen passen, sollte man das getrost mit einem Sperrvermerk belegen und im Thread auf eine der genannten Alternativen setzen. Ein Sleep in einem Thread ist eher Makulatur und keine stabile Grundlage. Das ist nur legitim um solche Timingprobleme zu lokalisieren.
TBitmap
|
AW: Threadübergreifende Bitmap
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz