AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Anwendung von Synchronize in TThread
Thema durchsuchen
Ansicht
Themen-Optionen

Anwendung von Synchronize in TThread

Ein Thema von simmi · begonnen am 27. Jul 2012 · letzter Beitrag vom 27. Jul 2012
Antwort Antwort
Benutzerbild von simmi
simmi

Registriert seit: 24. Nov 2004
Ort: Röbel/Müritz
112 Beiträge
 
Delphi XE5 Professional
 
#1

Anwendung von Synchronize in TThread

  Alt 27. Jul 2012, 13:36
Hallo,

ich möchte aus einem TThread auf dem, auf dem Hauptformular befindlichen progressbar ein progressbar1.StepIt ausführen. Leider komme ich mit der Syntax nicht zurecht.

Ich versuche
MyThread.Synchronize(progressbar1.StepIt);
Irgendetwas fehlt da. Habe damit noch nie gearbeitet und die gefundenen Beträge sind auf diese sicher simpele Angelegenheit nicht eingegangen.
Uwe
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

AW: Anwendung von Synchronize in TThread

  Alt 27. Jul 2012, 13:45
{LokalerNamespace.}Synchronize({LokalerNamespace.}progressbar1.StepIt);
MyThread.xxx ?
Du bist doch schon im Thread (hoffentlich in einer Methode der Threadklasse), dann solltest du niemals soeine externe gloable Variable verwenden, sondern immer nur Self (was man auch weglassen könnte).



Tja, du bist im Thread, also suchst du progressbar1 auch in der Threadklasse, womit es natürlich selbstverständlich ist, daß diese dort nicht gefunden wird.

> einfach: Man gehe über die globale Form-Variable.

> ordentlich: du übergibst z.B. im Constructor dem Thread die Form-Referenz, bzw. eigentlich besser eine DoProgressStep-Callback-Methode, welche sich der Thread speichert und über die du dann threadintern gehst.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

AW: Anwendung von Synchronize in TThread

  Alt 27. Jul 2012, 13:54
Die einfache Möglichkeit:
Delphi-Quellcode:
uses
  Unit3;

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
  Thread: TBeispiel;
begin
  Thread := TBeispiel.Create(True);
  Thread.FreeOnTerminate := True;
  Thread.Resume;
end;

procedure TForm1.Update;
begin
  ProgressBar1.StepIt;
end;
Delphi-Quellcode:
implementation

uses Unit1;

{ TBeispiel }

procedure TBeispiel.Execute;
var
  i: Integer;
begin
  for i := 0 to 9 do
  begin
    Update;
    sleep(1000);
  end;
end;

procedure TBeispiel.Update;
begin
  Synchronize(Form1.Update)
end;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von simmi
simmi

Registriert seit: 24. Nov 2004
Ort: Röbel/Müritz
112 Beiträge
 
Delphi XE5 Professional
 
#4

AW: Anwendung von Synchronize in TThread

  Alt 27. Jul 2012, 14:06
Danke für die schnelle Hilfe, komme jetzt zurecht
Uwe
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:51 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