AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Therad und Timer???

Ein Thema von romber · begonnen am 13. Aug 2004 · letzter Beitrag vom 13. Aug 2004
Antwort Antwort
romber

Registriert seit: 15. Apr 2004
Ort: Köln
1.164 Beiträge
 
Delphi 10 Seattle Professional
 
#1

Therad und Timer???

  Alt 13. Aug 2004, 11:11
Hallo!

Sind Threads und Timer nicht kompatibel oder wie? Ich erstelle im Thread einen Timer und der führt die OnTimer-Procedure überhaupt nicht aus!

z. B.:

Code:
...
type
 TMyThread = class(TThread)
 private
  {private declarations}
  timer: TTimer;
  FStartTime: TDateTime;
  procedure TimerOnTimer(Sender: TObject);
 protected
   procedure Execute; override;

end;
...

procedure TMyThread.TimerOnTimer(Sender: TObject);
begin
Form1.Edit1.Text := FormatDateTime('NN:SS', Now - FStartTime);
end;

procedure TMyThread.Execute;
begin
FStartTime := Now;
timer := TTimer.Create(nil);
timer.OnTimer := TimerOnTimer;
timer.Interval := 100;

...

while not terminated do
begin
  //Hier macht der Thread sein Hauptjob
end;
...
timer.Free;
end;
Mache ich etwas falsch?
  Mit Zitat antworten Zitat
Vjay

Registriert seit: 2. Dez 2003
Ort: Berlin/Eschede
481 Beiträge
 
Delphi 7 Professional
 
#2

Re: Therad und Timer???

  Alt 13. Aug 2004, 12:01
Du musst in deinem Execute auch eine Messageloop einbauen sonst beendet der Thread doch sofort. Oder haste das jetzt ausge . tet ?
Wer später bremst ist eher tot.
  Mit Zitat antworten Zitat
romber

Registriert seit: 15. Apr 2004
Ort: Köln
1.164 Beiträge
 
Delphi 10 Seattle Professional
 
#3

Re: Therad und Timer???

  Alt 13. Aug 2004, 12:10
Ja, ich habe die Kode oben ein wenig geändert. Läuft trotzdem nicht ;(
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Therad und Timer???

  Alt 13. Aug 2004, 12:14
Hi,

Antwort von Vjay schon mal richtig!

Frage: Warum ein Timer im Thread?

Der Timer verhält sich doch selber wie ein Thread. Was soll der da?

Aber zu deiner Frage. Ergänze deinen Code um folgendes:

in private:

FTimerTimer : Boolean;

im Ereignis TimeronTimer:

FTimerTimer := True;

in Execute:
Delphi-Quellcode:
procedure TMyThread.Execute;
begin
  FStartTime := Now;
  ...
  timer := TTimer.Create(nil);
  timer.OnTimer := TimerOnTimer;
  timer.Interval := 100;
  while not terminated or FTimerTimer do
    begin
    ...
    ...
  end;
end;
Dann arbeitet dein execute solange, bis der Thread terminiert wird oder dein OnTimer-Ereignis eintritt.

Prüfe bitte auch, ob dein Thread gestartet ist.

Gruß oki
  Mit Zitat antworten Zitat
romber

Registriert seit: 15. Apr 2004
Ort: Köln
1.164 Beiträge
 
Delphi 10 Seattle Professional
 
#5

Re: Therad und Timer???

  Alt 13. Aug 2004, 12:28
Danke erstmal! Ich versuche jetzt!
  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 19:14 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