Delphi-PRAXiS
Seite 4 von 4   « Erste     234   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Threadübergreifende Bitmap (https://www.delphipraxis.net/186810-threaduebergreifende-bitmap.html)

Bernhard Geyer 3. Okt 2015 13:41

AW: Threadübergreifende Bitmap
 
Zitat:

Zitat von Mavarik (Beitrag 1317583)
Zitat:

Zitat von Bernhard Geyer (Beitrag 1317510)
Zitat:

Zitat von Mavarik (Beitrag 1317505)
OK...
Schon funktioniert es!

Zufälligerweise.
Jedes Zeichnen aus dem Thread auf im Hauptprogramm erzeugte Formulare kracht früher oder später.

Deswegen ruft man ja Syncronize auf...

Bringt aber nicht wenn das was zu zeichnen willst im Thread erzeugt wurde und wie TBitmap Teile hat die Win32-GDI-Ressourcen verwenden

Mavarik 3. Okt 2015 13:44

AW: Threadübergreifende Bitmap
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1317584)
Zitat:

Zitat von Mavarik (Beitrag 1317583)
Zitat:

Zitat von Bernhard Geyer (Beitrag 1317510)
Zitat:

Zitat von Mavarik (Beitrag 1317505)
OK...
Schon funktioniert es!

Zufälligerweise.
Jedes Zeichnen aus dem Thread auf im Hauptprogramm erzeugte Formulare kracht früher oder später.

Deswegen ruft man ja Syncronize auf...

Bringt aber nicht wenn das was zu zeichnen willst im Thread erzeugt wurde und wie TBitmap Teile hat die Win32-GDI-Ressourcen verwenden

Die Paintbox wurde nicht im Thread erzeugt...

Bernhard Geyer 3. Okt 2015 13:45

AW: Threadübergreifende Bitmap
 
Zitat:

Zitat von Mavarik (Beitrag 1317585)
Die Paintbox wurde nicht im Thread erzeugt...

Aber das Bitmap wurde im Thread erzeugt. Und das will man ja dann im Hauptthread zeichnen.

Mavarik 3. Okt 2015 13:55

AW: Threadübergreifende Bitmap
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1317587)
Zitat:

Zitat von Mavarik (Beitrag 1317585)
Die Paintbox wurde nicht im Thread erzeugt...

Aber das Bitmap wurde im Thread erzeugt. Und das will man ja dann im Hauptthread zeichnen.

Boh... Eben nicht...

Es wird im HauptThread die Paitbox gezeichnet bzw. auf die Paintbox...
Es wird lediglich der grafische Inhalt von A nach B Kopiert...
Also alles gut, daher Funktioniert es ja nach meinen Änderungen

Bernhard Geyer 3. Okt 2015 14:06

AW: Threadübergreifende Bitmap
 
Zitat:

Zitat von Mavarik (Beitrag 1317589)
Zitat:

Zitat von Bernhard Geyer (Beitrag 1317587)
Zitat:

Zitat von Mavarik (Beitrag 1317585)
Die Paintbox wurde nicht im Thread erzeugt...

Aber das Bitmap wurde im Thread erzeugt. Und das will man ja dann im Hauptthread zeichnen.

Boh... Eben nicht...

Es wird im HauptThread die Paitbox gezeichnet bzw. auf die Paintbox...
Es wird lediglich der grafische Inhalt von A nach B Kopiert...
Also alles gut, daher Funktioniert es ja nach meinen Änderungen

Ja. nach den Änderungen. Davor (initial) aber nicht.

Mavarik 3. Okt 2015 14:14

AW: Threadübergreifende Bitmap
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1317591)
Ja. nach den Änderungen. Davor (initial) aber nicht.

Hat ja keine behauptet... Daher postet ich ja die nötigen Änderungen...
Ok egal - ich bin raus...

Mavarik

PS : LTQ

FirstTry 3. Okt 2015 20:56

AW: Threadübergreifende Bitmap
 
Vielen Dank für eure Hilfe!

Mit TBitmap32 funktioniert alles einwandfrei.
Wäre nett wenn mir jemand dazu gute Tutorials/ Beispiele liefern könnte.

Ansonsten sehe ich diesen Thread als geschlossen :)


Abschließend: TBitmap (oder sonst etwas, dass TCanvas nutzt) sollte nicht in Threads verwendet werden.

Der schöne Günther 4. Okt 2015 07:18

AW: Threadübergreifende Bitmap
 
War mir persönlich auch vollkommen neu. Haben wir alle die Doku nicht richtig gelesen oder steht das da schlichtweg nicht drin?

Namenloser 4. Okt 2015 09:29

AW: Threadübergreifende Bitmap
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1317501)
Zitat:

Zitat von Namenloser (Beitrag 1317437)
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.

Doch, kommt es! Alle Win32-Ressourcen (Und TCanvas, TBitmap verwenden solche) sind nur im Erzeugenden Thread gültig. Alle Aktionen mit diesen müssen im erzeugenden Thread erfolgen.

Wozu gibt es denn dann Delphi-Referenz durchsuchenTCanvas.Lock?


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:20 Uhr.
Seite 4 von 4   « Erste     234   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz