Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Threading/Threadsicher??? (https://www.delphipraxis.net/108787-threading-threadsicher.html)

Weazy 19. Feb 2008 16:21


Threading/Threadsicher???
 
Wie einige von euch vielleicht wissen habe ich hier meine SQX Komponente gepostet. Ich möchte nun die Operationen gethreaded ausführen. Dazu verwende ich die JVCL Thread Komponente und führe z.B die kompression durch diesen Thread (OnExecute) aus. Das Problem dabei ist dass z.B ein tLabel nicht sicher ist, d.h es kann ein Fehler (Leinwand erlaubt kein zeichen oder so) auftritt. Wie kann dass nun verhindern, also wie kann ich threadsicher arbeiten?

Dani 19. Feb 2008 17:03

Re: Threading/Threadsicher???
 
Zugriff auf VCL-Komponenten in Methoden auslagern, welche du mit Synchronize() aufrufst.

Zitat:

Zitat von Datei->Neu->Thread-Objekt
{ Wichtig: Methoden und Eigenschaften von Objekten in VCL oder CLX können
nur in Methoden verwendet werden, die Synchronize aufrufen, z.B.:

Synchronize(UpdateCaption);

wobei UpdateCaption so aussehen könnte:

procedure TMyThread.UpdateCaption;
begin
Form1.Caption := 'In einem Thread aktualisiert';
end; }


Weazy 20. Feb 2008 10:38

Re: Threading/Threadsicher???
 
Danke! Kann ich mit Thread.suspend und Thread.resume den Thread pausieren und fortsetzen?

Luckie 20. Feb 2008 11:00

Re: Threading/Threadsicher???
 
Zitat:

Zitat von Weazy
Danke! Kann ich mit Thread.suspend und Thread.resume den Thread pausieren und fortsetzen?

Was sagt denn die Hilfe dazu?

Weazy 21. Feb 2008 13:50

Re: Threading/Threadsicher???
 
Wie kann ich denn feststellen wann der Thread fertig ist?

sirius 21. Feb 2008 13:58

Re: Threading/Threadsicher???
 
Zitat:

Zitat von Weazy
Wie kann ich denn feststellen wann der Thread fertig ist?

Entweder du sendest eine MEssage oder löst ein Ereignis aus. Warten auf den Thread kannst du mit Waitforsingleobject.

Dani 21. Feb 2008 15:54

Re: Threading/Threadsicher???
 
TThread bringt ein Ereignis OnTerminate mit. Wenn du dort nur den vom Thread belegten Speicher freigeben willst, kannst du aber auch einfach die FreeOnTerminate-Eigenschaft des Threads verwenden (dann aber den Thread "suspended" erstellen, bevor du die Eigenschaft setzt, oder stattdessen gleich im Constructor FreeOnTerminate setzen).

Weazy 21. Feb 2008 17:14

Re: Threading/Threadsicher???
 
danke, OnTerminate habe ich ja glatt übersehen! Das mit suspend und resume schein zu klappen!!!

Weazy 22. Feb 2008 16:14

Re: Threading/Threadsicher???
 
Während die Funtkion getreaded ausgeführt wird ein vom Benutzer ein String abgefragt. Der Thread soll nur fortfahren wenn die Benuzer eingabe getätigt wurde oder abgebrochen wurde. Wie kann ich aus dieser funktion heraus eine funktion (nicht getreaded) ausfuhren und danach den Thread fortsetzen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:02 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