![]() |
Time Funktion Probleme auf Windows Server 2003
Hallo,
ich zeige die aktuelle Uhrzeit über einen Timer (100ms) an:
Delphi-Quellcode:
Nun hat ein Kunde berichtet das die Zeit alle paar Sekunden wild umher springt, also mal eine Stunde mehr, 15 Minuten weniger, usw. Der Kunde benutzt Windows Server 2003. Auf XP usw. funktioniert es wie es soll, nur auf Windows Server "spinnt" die Zeitausgabe im Vergleich zur Zeit die in der Taskleiste unten rechts angezeigt wird.
LabelClock.Caption := TimeToStr(Time);
Application.ProcessMessages; Woran kann das liegen? |
Re: Time Funktion Probleme auf Windows Server 2003
Application.ProcessMessages; ist unnötig wenn es eh in einem Timer abläuft.
Wenn schon mach ein
Delphi-Quellcode:
zur GUI-Aktualisierung.
LabelClock.Update
|
Re: Time Funktion Probleme auf Windows Server 2003
Ok, die Frage ist aber immer noch warum zeigt das Label extreme Zeitsprünge an?
Delphi-Quellcode:
da kann man eigentlich wenig falsch machen?!
LabelClock.Caption := TimeToStr(Time);
Bsp: es ist 15:00:00 Uhr. Das Label zeigt für ein paar Sekunden die richtige Zeit, dann auf einmal z.B. 14:15:23, dann 16:10:23 usw., slso total wirre Zeiten. :gruebel: |
Re: Time Funktion Probleme auf Windows Server 2003
Zitat:
für Prozesse die im "Vordergrund" laufen. Dadurch kann es zu solchen Verzögerungen kommen. Versuch mal deinem Timer mehr Prozesspriorität zuzuweisen. Danach sollte das Problem nicht mehr so krass sein. lg. Astat |
Re: Time Funktion Probleme auf Windows Server 2003
Hallo Astat,
die ganze Anwendung läuft schon mit Priorität "HIGH", das wird bei Form1.OnCreate gesetzt.
Delphi-Quellcode:
Wie kann ich nur dem Timer mehr Prozesspriorität zuzuweisen?
SetPriorityClass(GetCurrentProcess,DWORD(HIGH_PRIORITY_CLASS));
:gruebel: Grüsse, surfer007 |
Re: Time Funktion Probleme auf Windows Server 2003
Zitat:
Test mal folgendes, wenn meine Vermutung richtig, dann sollte das Problem beseitigt sein. Danach suchen wir auch für die Serverumgebung eine Lösung. 1. Systemsteuerung -> System -> Reiter -> Erweitert -> Systemleistung -> Anwendung auswählen 2. Wenns funktioniert, den verwendeten Timer in einen mmTimer mit kritischer Priorität umcoden 3. Systemeinstellungen wieder rückgängig machen. Versuchs mal. lg. Astat |
Re: Time Funktion Probleme auf Windows Server 2003
Hallo Astat,
danke für den Tip! Ich kann das leider nicht testen da ich selbst kein Server System habe. Ich gebe das mal an den Kunden weiter, mal sehen ob es besser wird wenn die Systemleistungsoptionen auf "Anwendung" steht. Grüsse, Surfer007 |
Re: Time Funktion Probleme auf Windows Server 2003
Zitat:
Bitte nicht dem Kunden empfehlen seine Serverperformance desswegen zu verschlechtern. Auf Serversystemen laufen die Hintergrundprozesse immer mit höherem Boost als die Vordergrundprozesse eines eingeloggten Users. Überlegen wir mal, wann tritt ein solches Problem auf: 1. Server ausgelastet, und Vordergrundanwendungen bekommen weniger Rechenzeit zugeteilt. 2. Applikation ausgelastet, und Neuzeichnung der VCL Controls, und Messagequeue werden verzögert abgearbeitet. Tip: Im Quellcode nach Sleep und Processmessages suchen. Werden welche gefunden, folgendes bedenken. Programme ohne Threads, aber mit Messagequeue, sollten keine Sleeps enthalten. Wenn Processmessages vorhanden, sollte man sich eine möglichkeit suchen, betroffene Codeteile durch Threads zu ersetzen. In Threads nur Sleep zur Freigabe von übriger Rechenzeit verwenden, niemals zur Synchronisation verwenden. lg. Astat |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:22 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