BlackMatrix hat folgendes geschrieben : |
... dann erreiche ich mein Ziel glaube ich schneller, wenn ich die aktuelle Zeit von der (in dem vorherigen Durchlauf ermittelten) Zeit subtrahiere. |
Das ist auch meine Vermutung. Aber weil du dein Verfahren unter WinForms anscheinend schon fertig hattest, wollte ich diese Diskussion nicht lostreten.
BlackMatrix hat folgendes geschrieben : |
Ich kann vielleicht mit dem Begriff Timer noch nichts so richtig anfangen. Ein Zeitzähler, der die verstrichene Zeit ermittelt, ist wohl kein Timer? |
Richtig. Ein Timer ist etwas, was im Arbeitsspeicher sozusagen selbständig rumhängt - ohne offensichtliche (!) Verbindung mit deinem Programm (abgesehen natürlich vom Verweis des Programms auf diesen Timer). Je nach Art der Konstruktion ist er zunächst inaktiv (disabled, enabled=false). Wenn du den Timer startest (Aufruf der Start-Methode, enabled=true), dann passt er "nur" auf. Jeweils nach Ablauf der eingestellten Zeit (z.B. nach 1000 msec) meldet er sich und löst das entsprechende Ereignis aus. Dann wird die dazu vorgesehene Methode ausgeführt; danach passt er wieder auf und wartet erneut auf den Ablauf der Zeit.
Wenn die Methode nur einmal ausgeführt werden soll, muss sie Timer.Enabled auf false setzen.
Du kannst jederzeit die aktuelle Uhrzeit mit DateTime.Now holen. Ein übliches Verfahren ist es, am Anfang einer Methode die Startzeit zu notieren, am Ende einer Methode die Schlusszeit und dann die Differenz als TimeSpan zu berechnen. Außerdem gibt es für ähnliche Aufgaben Environment.TickCount.
Ich glaube, es gibt auch die Zeit, wann das Programm gestartet wurde; aber das fällt mir im Moment nicht ein, und ich finde es in der Hilfe nicht.
Ich hoffe, das macht es etwas klarer. Mehr Informationen findest du natürlich in der
SDK-Doku/MSDN/Hilfe.
Gruß Jürgen
PS. In der Theorie sind meine Erläuterungen vermutlich sehr ungenau. Ich hoffe aber, dass sie für die Praxis hilfreich sind.