Autor Beitrag
Testobjekt
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Do 07.12.17 15:04 
Hallo Freunde!

Ich mache derzeit ein bestimmtes Programm und dafür benötige ich einen Timer beziehungsweise eine Stoppuhr die nach Zehntelsekunde(100ms) genau nach oben zählt.
Wenn ich jedoch den Timer starte und ihn mit dem Timer auf meinem Smartphone vergleiche, merke ich, dass der Timer etwas zu langsam ist und eben je länger der Timer läuft desto ungenauer wird es.
ausblenden C#-Quelltext
1:
2:
3:
dt.Interval = TimeSpan.FromMilliseconds(100);
dt.Tick += dtTicker;
dt.Start();

Wie kann ich den Timer präzisieren? Find da nix zu :?:

Vielen Dank bereits im Voraus :D

PS: Wird in WPF 3.5 Framework geschrieben

Moderiert von user profile iconTh69: Topic aus C# - Die Sprache verschoben am Do 07.12.2017 um 14:17
Symbroson
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 382
Erhaltene Danke: 67

Raspbian, Ubuntu, Win10
C, C++, Python, JavaScript, Lazarus, Delphi7, Casio Basic
BeitragVerfasst: Do 07.12.17 15:06 
kannst du durch den Timer irgendwie die Vergangene Zeit nach dem Start oder so ermitteln? Dadurch sollte der Timer genau bleiben. Ansonsten muss es auch möglich sein die Systemzeit abzufragen.
LG

_________________
most good programmers do programming not because they expect to get paid or get adulation by the public, but because it's fun to program. (Linus Torvalds)
Symbroson
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 382
Erhaltene Danke: 67

Raspbian, Ubuntu, Win10
C, C++, Python, JavaScript, Lazarus, Delphi7, Casio Basic
BeitragVerfasst: Do 07.12.17 15:28 
Schau mal hier: msdn.microsoft.com/d...espan(v=vs.110).aspx
Da sind alle verfügbaren Methoden von dem TimeSpan-Objekt aufgelistet. Ich vermute mal die Total* Methoden geben die vergangene Zeit seit dem Erstellen des Objektes zurück

Ansonsten gibt es noch DateTime.now: stackoverflow.com/qu...ow-as-timespan-value
das kannst du ja mal als Alternative ausprobieren

Edit: In Delphi greife ich inzwischen auch meistens auf QueryPerformanceCounter und QueryPerformanceFrequency zurück - die sind ziemlich genau. Hab nicht dran gedacht, dasss die WinAPI in C# verfügbar sein könnte :roll:

_________________
most good programmers do programming not because they expect to get paid or get adulation by the public, but because it's fun to program. (Linus Torvalds)


Zuletzt bearbeitet von Symbroson am Do 07.12.17 15:35, insgesamt 1-mal bearbeitet
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Do 07.12.17 15:30 
Hallo,

die Timer-Komponente hat nur eine Auflösung von ca. 15ms, so daß du also bei 100ms eine gewisse Ungenauigkeit drin hast.
Bei exakter(er) Zeitmessung benötigst du einen "high resolution timer", s. z.B. High-Performance Timer in C# oder Microsecond and Millisecond C# Timer.
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 07.12.17 18:30 
- Nachträglich durch die Entwickler-Ecke gelöscht -