High Resolution Timer

30/01/2009 - 17:25 von Christian Thiele | Report spam
Hi,

ich stehe vor einem Problem, für das ich derzeit keine Lösung finde. Mein
Programm berechnet gewisse mathematische Dinge und zeigt sie grafisch im
Zeitverlauf an. Als Trigger zur Berechnung des nàchsten Zeitschritts
verwendete ich zunàchst die Timer-Klasse. Diese hat aber das alte Problem,
dass Windows nur in 15-Millisekunden-Slots arbeitet, ich benötige jedoch
100 Hertz, also 10ms.
Nach einiger Recherche fand ich die Klasse System.Diagnostics.Stopwatch,
die (zumindest auf Geràten, die das unterstützen) sehr viel bessere
Auflösungen erlaubt. Problem: mit dieser Klasse kann man messen, aber
nicht nach einer gewissen Zeit ein Event antriggern. Daher sieht mein
entsprechender Code jetzt ungefàhr folgendermaßen aus:

while (true)
{
while (sw.ElapsedTicks < ticks) Application.DoEvents();
sw.Reset();
sw.Start();
DoSomething();
}

wobei sw natürlich die Stopwatch-Instanz ist. Das ganze làuft in einem
Extra-Prozess und funktioniert auch einwandfrei. Das Problem ist: die
Prozessorlast geht auf 100% hoch - .NET prüft so schnell es kann immer
wieder, ob die Zeit vergangen ist. Und das ist mein Problem. Setze ich in
die innere while-Schleife ein sleep(1) funktioniert es natürlich wieder
nicht, da sleep(1) praktisch sleep(15) entspricht und damit wieder keine
10 ms erreicht werden.

Ich suche also eine Lösung entweder für ein echtes sleep(1) oder wie ich
sonst (ohne 100% CPU-Auslastung) einen 10-ms-Timer hinbekomme.

Danke und Grüße,
Christian Thiele
 

Lesen sie die antworten

#1 Kerem Gümrükcü
30/01/2009 - 18:02 | Warnen spam
Hallo Christian,

schau mal hier und schau mal ob das vom Timming
die Auflösung bringen wird, die Du benötigst:

http://www.codeproject.com/KB/cs/hi...cshar.aspx

Grüße

Kerem

Beste Grüsse / Best regards / Votre bien devoue
Kerem Gümrükcü
Latest Project: http://www.pro-it-education.de/soft...iceremover
Latest Open-Source Projects: http://entwicklung.junetz.de
"This reply is provided as is, without warranty express or implied."

Ähnliche fragen