Gibt es eine Möglichkeit, die Timer
so zu starten, dass sie genau auf die volle Sekunde startet?C# timer start bei genau voller Sekunde
stateTimer = new Timer(someCallback, null, 0, 1000);
wird dieses man sofort beginnen, jede Sekunde wiederholen, aber das Problem ist es genau beginnt, wenn ich das Programm ausführen, die in 13:14:15.230
Start führen kann.
Ich möchte 13:14:15.000
starten. Etwas wie:
stateTimer = new Timer(someCallback, null, DateTime.Now.Date, 1000);
Ist das möglich?
EDIT:
Nachdem das Konsolenprotokoll tun:
Console.WriteLine($"Time: {DateTime.Now.ToString("HH:mm:ss.fff")}");
Ich habe bemerkt, dass 1 Sekunde Intervall von tatsächlich mehr als eine Sekunde (etwa 1,02 jede Iteration), so erhöht wird nach 50 Iterationen wird eine Sekunde übersprungen. Ich habe mein Problem gelöst, indem ich den Timer alle 800ms laufen lasse. Keine ideale Lösung, aber es funktioniert, und zweitens wird nie übersprungen (und ich habe kein Problem, die gleiche Sekunde zweimal auszulösen).
stateTimer = new Timer(someCallback, null, 0, 800);
Warum ist es ein Problem, wenn der Timer nicht genau auf den zweiten läuft? – ChrisF
Sie könnten berechnen, wie lange Sie das nächste Mal starten und so viel schlafen möchten, dann starten Sie es, aber seien Sie sich bewusst, dass Windows kein Echtzeitbetriebssystem ist, es gibt keine Garantie dafür, dass Ihr Timer genau tickt das von Ihnen angegebene Zeitintervall, nur "nahe genug". Warum brauchst du das genau? –
Eine "zweite" ohne Bruchteil ist ein imaginärer oder theoretischer Begriff, und es ist völlig willkürlich. Was eine Person (oder ein Computer) denkt, ist eine exakte/volle Sekunde, eine andere denkt, dass sie mitten in zwei Sekunden ist, weil es unmöglich ist, die beiden zu synchronisieren. Sofern Sie nicht erklären können, warum dies notwendig oder nützlich ist, ist diese Frage in Ihrem Fall nicht von Wert. –