![]() |
Umlaufzeit eines Threads ermitteln
Tach auch!
Ich hab da mal ne kurze Frage. Und zwar ermittele ich die ungefähre Umlaufzeit eines Threads, in dem ich mir am Anfang des Thread.Execute den Wert von "now" in eine TDateTime-Variable "lastStart" speichere und beim nächsten Durchlauf delta := MilliSecondsBetween(lastStart, now) aufrufe. Jetzt könnte es natürlich ein Problem geben bei der Umstellung von Sommer- auf Normalzeit. Theoretisch könnte lastStart von 02:59:59 sein und now 02:01:00. Da hätte ich ein negatives Delta :shock: Da das Programm durchlaufen soll ist GetTickCount ja auch keine Lösung. Da könnte/würde ich ein dementsprechendes Problem nach 49,7 Tagen haben. Wie macht ihr das in euren Threads, die dauerhaft laufen und bei denen ihr die Umlaufzeit benötigt? |
Re: Umlaufzeit eines Threads ermitteln
Die Lösung mit Now würde schon gehen. Und Sommer/Winterzeitumstellung sollte über entsprechende API-Befehle auch bestimmbar sein.
|
Re: Umlaufzeit eines Threads ermitteln
Jupp, so in der Richtung. Eine Lösung gibts hier auch schon, Stichwort UTC:
![]() Danke für den Fingerzeig! |
Re: Umlaufzeit eines Threads ermitteln
Übrigens kannst Du sehr wohl GetTickCount nehmen. Du musst nur wissen, wie man mit negativem Delta umgeht ...
Delphi-Quellcode:
Ungetestet, sollte aber funktionieren.
Var
Delta : Int64; Begin Delta := GetTickCount - LastCall; If Delta < 0 Then Delta := High (Cardinal) + Delta; |
Re: Umlaufzeit eines Threads ermitteln
Hmm, auch ne interessante Variante. Ich bastel da mal ein Testprogramm mit und lass das mal ein paar Wochen aufm Server laufen. Mal schauen was passiert ;-)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz