C#-Timer, der alle X Sekunden ausgelöst wird, aber mit der Echtzeit synchronisiert bleibt (d. h.ohne Drift)

StackOverflow https://stackoverflow.com/questions/3296784

  •  18-09-2020
  •  | 
  •  

Frage

Gibt es in C# einen .NET-Timer, der sicherstellen kann, dass es zwischen Ereignissen keine „Abweichung“ gibt?Das heißt, wenn Sie den Timer so einstellen, dass er alleUm sicherzustellen, dass die ungefähre Anzahl von X-Sekunden-Ereignissen an einem Tag mit dem übereinstimmt, was sie sein sollten?

Wenn nicht, gibt es ein bekanntes Codebeispiel, das zu diesem Zweck eine Timer-Funktion in C# einschließen würde?

War es hilfreich?

Lösung

Entschuldigung, dass ich Ihnen nur einen Link gegeben habe quartz.net, aber dies ist ein voll qualifiziertes, unternehmenserprobtes, ...Bibliothek ...Du musst das Rad nicht neu erfinden :)

Wenn Sie sich Gedanken über den Overhead machen, wie definieren Sie den Overhead?Liegt es an der Dateigröße (Binärdateien sind etwa 0,5 MB groß) oder am Overhead in der Logik?Nun zum Logik-Teil:Ich denke, dass die Umsetzung ihrer IJob-interface leistet gute Arbeit, um einen besseren Code des Verbrauchers zu erzwingen.Ich bin kein großer Freund von Inline-Methoden (nur als Beispiel, da Sie ihre Zeiger bei Ablauf des Timers auslösen könnten) – Klassen würden Ihnen viel mehr Möglichkeiten bieten und wiederum ein besseres Oop, Domänendesign usw. erzwingen. .

Aber:tun Console.WriteLine(...) mit quartz.net wäre übertrieben ...:) :)

Andere Tipps

Ich gehe davon aus, dass Sie schon etwas ausprobiert haben, und dass es driftet.

Wenn Sie alle 5 Sekunden von der Stunde (5,10,15,20..NOW + Anzahl der Sekunden bis zum nächsten 5 Sekunden-Intervall.

Dies würde verhindert, dass Ihre Taste driftet, solange Ihre Uhr korrekt ist.

so etwas so

generasacodicetagpre.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top