Einzelnen Beitrag anzeigen

Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#13

Re: Prüfen ob Thread noch läuft

  Alt 25. Jan 2007, 09:12
[/delphi]Jede Interaktion mit dem Hauptthread muss mit synchronize erfolgen.
Und damit erst recht jeder Zugriff auf VCL-Komponenten.

Am Besipiel progressbar (dies gilt für alle anderen Variablen, Komponenten aus dem Haptthread genauso):
Delphi-Quellcode:
type
  tmythread = class(TThread)
  private
    { Private-Deklarationen } 
    incProgressbar:integer;
  protected
    procedure Execute; override; //in Execute kommen nur Sachen rein, die definitv nie auf Komponenten oder Variablen anderer Threads zugreifen
    procedure updateProgressbar; //immer eigene Methoden für solche "Querzugriffe"
  public
  end;

implementation

procedure tmyThread.UpdateProgressbar;
begin
  //hier möglichst zeitsparend (wenig befehle) arbeiten, sonst bringt der ganze Thread nix
  progressbar.stepby(incProgressbar);
end;

procedure tmythread.Execute;
begin
  //...
  incprogressbar:=5;
  synchronize(updateprogressbar); //Variablen kannst du am einfachsten über die private Deklaration des ThreadObjektes übergeben
  //...
end;
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat