Site logo
Site logo
Programmieren aus Leidenschaft
Programmieren aus Leidenschaft

WinForms Timer


Timer sind eine praktische und oft benötigte Komponente und beim täglichen Programmieren unverzichtbar. So ist es nicht verwunderlich, dass sie im .NET Framework gleich mehrfach vorkommen. Beschäftigen wir uns aber zuerst mit der einfachsten Variante. Dem Timer im System.Windows.Forms.Namespace.

Obwohl man diesen Timer auch mit dem Designer erstellen kann, so rate ich doch zur manuellen Programmierung. Es ist nur minimaler Aufwand und sehr leicht zu verstehen. Außerdem macht des den Programmcode übersichtlicher.
System.Windows.Forms.Timer formsTimer = new System.Windows.Forms.Timer();
formsTimer.Interval = 1000;
formsTimer.Enabled = true;
Diese drei Programmzeilen sind schon fast alles was für einen Timer nötig ist. Zuerst wird ein Objekt der Timer Klasse erzeugt. Das sollte nicht weiter schwierig sein, denn es ist genau so wie bei anderen Objeken. Der wohl wichtigste Parameter, den ein Timer braucht, ist der Interval. Dieser Wert - in Millisekunden - gibt an, wie oft die Timerfunktion ausgeführt werden soll. Ein Mal pro Sekunde entspricht also einem Interval von 1000. Enabled = true startet diesen Timer.

Es gibt Alternativen um Timer zu starten und zu stoppen. Enabled auf true oder false zu setzen ist nur eine Möglichkeit. Zusätzlich gibt es Start und Stop Methoden, die genau das selbe bewirken.
formsTimer.Start();
und sein Gegenstück
formsTimer.Stop();
kann man also problemlos statt dem enabled Wert benutzen. Es ist Geschmackssache was man hier bevorzugt. Technisch gibt es keinen Unterschied. Will man aber prüfen ob ein Timer aktiv ist oder nicht, so ist enabled der Wert, der abgefragt werden muß.

Haben wir also jetzt einen Timer der ein Mal pro Sekunde ausgeführt wird so passiert immer noch recht wenig. Was dem Timer noch fehlt ist eine Methode die im eingestellten Interval abgearbeitet werden soll. Deklariert wird diese Methode wie folgt:
formsTimer.Tick += new EventHandler(TimerEvent);
Unschwer zu erkennen ist, dass hier ein EventHandler mit ins Spiel kommt. Was das ist und was das tut, darüber sollte man sich aber an dieser Stelle nicht unnötig Gedanken. Events werde ich in einem späteren Beispiel noch genauer erklären. Wichtig für uns ist im Augenblick nur, das die aufzurufenden TimerEvent-Methode bestimmte Parameter erwartet. Diese Parameter werden aber vom System mit gegeben, so dass man sich darüber keine Gedanken machen muß. Wichtig ist in unserem Beispiel nur, dass unsere Methode die Parameter richtig entgegen nimmt.
private void TimerEvent(Object myObject, EventArgs myEventArgs)
{
   this.Text = DateTime.Now.ToString();
}
Auch wenn wir Object und EventArgs hier nicht ausgewertet haben, haben wir doch eine funktionsfähige Timermethode. In diesem Beispiel werden Datum und Uhrzeit in die Titelleiste unseres Forms geschrieben. Das geschieht nach dem Start des Timers automatisch und zwar jede Sekunde.