AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Thread + Timer, Einbinden von TimerThread.pas

Ein Thema von MarLe · begonnen am 10. Sep 2014 · letzter Beitrag vom 3. Jan 2018
Antwort Antwort
Seite 2 von 5     12 34     Letzte » 
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.069 Beiträge
 
Delphi 10.3 Rio
 
#11

AW: Thread + Timer, Einbinden von TimerThread.pas

  Alt 2. Jan 2018, 09:43
Nur.. mit Events eben.. und nicht mit Sleep?
emm... Ja genau das macht ja den Unterschied...
  Mit Zitat antworten Zitat
LTE5

Registriert seit: 13. Nov 2017
355 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#12

AW: Thread + Timer, Einbinden von TimerThread.pas

  Alt 2. Jan 2018, 12:07
Angenommen ich möchte einen Thread 5 Stunden schlafen legen und er soll nach diesen 5 Stunden alleine aufwachen.
Wie bewerkstellige ich das ohne Sleep?
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.073 Beiträge
 
Delphi 7 Professional
 
#13

AW: Thread + Timer, Einbinden von TimerThread.pas

  Alt 2. Jan 2018, 12:22
Interval := 5 * 60 * 60 * 1000; 5 Stunden * 60 Minuten * 60 Sekunden * 1000 Millisekunden?

Und wenn er dann wach wird, Interval auf den dann gewünschten Zeitraum setzen?
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.069 Beiträge
 
Delphi 10.3 Rio
 
#14

AW: Thread + Timer, Einbinden von TimerThread.pas

  Alt 2. Jan 2018, 12:38
Angenommen ich möchte einen Thread 5 Stunden schlafen legen und er soll nach diesen 5 Stunden alleine aufwachen.
Wie bewerkstellige ich das ohne Sleep?
5h ist natürlich schon eine Spanne.

Ich würde mir in so einen Fall einen Timeout von X Minuten setzen und dann immer in einer Liste nachschauen ob ein Event ansteht.

Beispiel: ThreadTimeout auf 1h...

Wenn der nächste Termin < 1h ist setze ich den Timeout auf "Restzeit" dann habe ich einen Event der genau feuert.

Das gleiche, wenn ein neuer Event in die Liste kommt.
  Mit Zitat antworten Zitat
LTE5

Registriert seit: 13. Nov 2017
355 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#15

AW: Thread + Timer, Einbinden von TimerThread.pas

  Alt 2. Jan 2018, 12:40
Ich verstehe ehrlich gesagt den Sinn von Events in diesem Falle nicht.

Warum nicht einfach einen Sleep und fertig?
Wie sieht denn dieses Beispiel mit der Event-Thread-Ableitung aus? Vielleicht kapiere ich es dann.
Die 5 Stunden waren nur ein Beispiel.

Delphi-Quellcode:
procedure TMyNormalThread.Execute;
begin
  while not Terminated do
   begin
    Sleep(1000);

    if 1 = 2 then
     // viel zu tun
   end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.069 Beiträge
 
Delphi 10.3 Rio
 
#16

AW: Thread + Timer, Einbinden von TimerThread.pas

  Alt 2. Jan 2018, 12:51
Ich verstehe ehrlich gesagt den Sinn von Events in diesem Falle nicht.
Warum nicht einfach einen Sleep und fertig?
Ganz einfach. Es geht nur darum möglichst wenig CPU Zeit zu verbrennen.
  Mit Zitat antworten Zitat
LTE5

Registriert seit: 13. Nov 2017
355 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#17

AW: Thread + Timer, Einbinden von TimerThread.pas

  Alt 2. Jan 2018, 12:58
Das verstehe ich jetzt. Könntest du das Minimalbeispiel oben eventuell umändern? Vielleicht verstehe ich dann auch den Rest und die Handhabe generell.
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.073 Beiträge
 
Delphi 7 Professional
 
#18

AW: Thread + Timer, Einbinden von TimerThread.pas

  Alt 2. Jan 2018, 13:01
Siehe hier: http://www.delphipraxis.net/1270100-post13.html

Du weist Interval die gewünschte Zeitspanne zu. Die wird dann im Execute von selbst berücksichtigt.

Ein Beispiel dazu: http://www.delphipraxis.net/929219-post1.html

Also grob geraten, da ungetestet:
Delphi-Quellcode:
procedure TMyNormalThread.Execute;
var
  res : TWaitResult;
begin
  while not Terminated do
   begin
    // Sleep(1000);
    res := FEvent.WaitFor(FInterval); // also z.B. 1000

    // if 1 = 2 then
      // viel zu tun
    // end;
    case res of
      wrSignaled : if 1 = 2 then begin
                     // viel zu tun
                   end;
      wrTimeout : ;
      wrAbandoned : Terminate;
      wrError : { Fehler loggen };
    end;
  end;
end;
  Mit Zitat antworten Zitat
LTE5

Registriert seit: 13. Nov 2017
355 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#19

AW: Thread + Timer, Einbinden von TimerThread.pas

  Alt 2. Jan 2018, 13:11
Ich probiere das gleich mal aus! Danke.
Habe mich anders entschieden. Ist mir den Aufwand nicht wert.
Ich belasse alles so wie es aktuell ist. Mit Sleep fahre ich gut.
Außerdem kapier ich das eh nicht.

Geändert von LTE5 ( 2. Jan 2018 um 14:37 Uhr)
  Mit Zitat antworten Zitat
LTE5

Registriert seit: 13. Nov 2017
355 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#20

AW: Thread + Timer, Einbinden von TimerThread.pas

  Alt 3. Jan 2018, 12:59
Mich intertessiert aber trotzdem noch wie man so einen Thread aufweckt und schlafen legt.
Und wie man auf Terminate reagiert und ob man in WaitFor festhängt.
Und woher kommt das Ergebnis von FEvent.WaitFor? Muss man das von Außen setzen?

Am wichtigsten ist aber die Frage was überhaupt der Unterschied ist
Delphi-Quellcode:
// Sleep(1000);
res := FEvent.WaitFor(FInterval); // also z.B. 1000

// was zu tun
ist es nicht vollkommen egal, ob WaitFor oder Sleep? Nach 1000 ms gehts doch eh weiter und CPU-Zeit wird verbraten.

Geändert von LTE5 ( 3. Jan 2018 um 13:01 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 22:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf