Laden...

Einsatz von (mehreren/schnellen) Timern

Erstellt von mikeic vor 13 Jahren Letzter Beitrag vor 13 Jahren 798 Views
M
mikeic Themenstarter:in
1 Beiträge seit 2010
vor 13 Jahren
Einsatz von (mehreren/schnellen) Timern

Hallo!

Ich bezeichne mich als fortgeschrittenen Anfänger inC# und habe jetzt eine Frage zum Einsatz von Timern.

Ich schreibe ein Programm, das als Datenrekorder für ein anderes Programm dient und diese Daten sowohl in ein Logfile schreibt als auch an meinen Server überträgt.
Zusätzlich reagiert der Rekorder auf gewisse Aktionen des Users im anderen Programm und verhindert ggf. diese Aktionen. Im anderen Programm kann ich das nicht abfangen, da ich auf dieses keinen Codezugriff habe.

Grob gibt es drei unterschiedliche Aktionsbereiche, die regelmäßig gemacht werden müssen:
1) Checks
Diese müssen in sehr knappen Abständen (ca. 10ms) erfolgen, da sie kritisch sind. Geht ein Check schief, wird zum Einen die zugrunde liegende Aktion revidiert und zum Anderen in meinem Programm eine entsprechende Meldung ausgegeben.

2) Datenlogging
Alle 1000ms werden Daten analysiert und ggf. gespeichert. Ebenso werden sie möglicherweise in das Logfile geschrieben und an meinen Server geschickt. Ein paar Daten werden auch in der GUI angezeigt und müssen ggf. upgedated werden.

3) GUI-Updates
Hier wird z.B. jede Minute von einem Zeitserver die aktuelle Zeit angezeigt, die Verbindung zu meinem Server überprüft und entsprechend visualisiert sowie die Verbindung zum anderen Programm überprüft.

Ich sehe zwei Ansätze, wie ich meine Timer aufbauen könnte:
einen Timer alle 10ms
Der macht alle Arbeiten, wobei anhand eines Zähler entschieden wird, welche Aktionen erfolgen soll (also z.B. (Zähler % 1000 == 0) => Lese Daten)

mehrer Timer
Ich mache insgesamt 4 Timer:
a) Check-Timer
b) Datenanalyse-Timer
c) Logfile- und Server-Timer
d) GUI-Timer

Die Frage ist, welche Vorgehensweise sinnvoller ist, wenn unbedingtes Ziel ist, daß der Check-Timer möglichst genau immer alle 10ms läuft.
Ich schwanke auch darin, welche Timertypen ich verwenden soll, da habe ich soviele Informationen gefunden, daß ich da eher unsicherer als sicherer werde 😉

Könnt ihr mir da ev. ein bisschen unter die Arme greifen?

Danke & beste Grüße
Michael

1.130 Beiträge seit 2007
vor 13 Jahren

10ms

Dafür ist wohl ein multimedia-timer am besten, die anderen habe iene Auflösung von ca. 15ms

Projekte:Jade, HttpSaver
Zum Rechtschreiben gibts doch schon die Politiker. Aber die bauen auch nur mist!

4.942 Beiträge seit 2008
vor 13 Jahren

Ich habe mich an diesen Beitrag Welchen Timer den nun? erinnert, wo es um eine ähnliche Fragestellung ging.
Neben dem Multimedia-Timer gäbe es auch noch die Möglichkeit mittels QueryPerformaceCounter eine genaue Abfrage im (Unter-)Millisekundenbereich zu machen.

1.130 Beiträge seit 2007
vor 13 Jahren

Die
Stopwatch-klasse verwendet intern Performancecounter.

Projekte:Jade, HttpSaver
Zum Rechtschreiben gibts doch schon die Politiker. Aber die bauen auch nur mist!