Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Auf TThread-Eigenschaften zugreifen (https://www.delphipraxis.net/37575-auf-tthread-eigenschaften-zugreifen.html)

jfheins 7. Jan 2005 14:07


Auf TThread-Eigenschaften zugreifen
 
Wenn man aus einem Thread auf den Hauptthread zugreift, muss man ja Synchronize verwenden, damit es keine AV gibt.
Muss man etwas ähnliches auch machen, wenn man aus dem Hauptthread auf den Thread zugreift ?
Also z.B.
Delphi-Quellcode:
procedure TForm1.Button5Click(Sender: TObject);
begin
 Threadklasse.Eigenschaft := 'qwertzuiop';
end;
Oder:
Delphi-Quellcode:
procedure TForm1.ColorBox1Change(Sender: TObject);
begin
  Thread.Color := ColorBox1.Selected;
end;
Muss man den Thread vielleicht kurzzeitig anhalten ?

Beim ausprobieren ging es meistens, manchmal ist der das programm kurz stehen geblieben,
ein paar mal sogar komplett angestürtzt ...

Christian Seehase 7. Jan 2005 15:26

Re: Auf TThread-Eigenschaften zugreifen
 
Moin Julius,

ich würd' mal in die Get-/Set-Methode der Eigenschaft ein Synchronize einbauen.

Jelly 7. Jan 2005 15:36

Re: Auf TThread-Eigenschaften zugreifen
 
Zitat:

Zitat von jfheins
Muss man etwas ähnliches auch machen, wenn man aus dem Hauptthread auf den Thread zugreift ?

Nach meiner Kenntnis, solange du nur lesend drauf zugreifst, sollte nichts passieren. Schreibend auch nicht, solange dein Thread nicht gleichzeitig ebenfalls schreibend drauf zugreift. d.h., wenn du dir sicher bist, daß du intern in deinem Thread NIE auf die Eigenschaft Color zugreifst, sollte auch nichts passieren, wenn du von deinem Hauptthread was dran änderst.

jfheins 7. Jan 2005 15:51

Re: Auf TThread-Eigenschaften zugreifen
 
Das einzige, was ich im Thread mit Color mache ist das:
Delphi-Quellcode:
Bitmap.Clear (Color);

procedure TBitmap32.Clear(FillColor: TColor32);
begin
  if Empty then Exit;
  FillLongword(Bits[0], Width * Height, FillColor);
  Changed;
end;
es wird also nur gelesen. aber gerade hier stürt das Programm ab, wenn ich die colorbox anklicke. wenn ich den Thread erst pausiere, dann die colorbox ändere und dann weiterlaufen lasse, funktioniert alles wunderbar ...

Achja, im Moment sind's keine Eigenschaften, sondern nur Variablen ...


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:17 Uhr.

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