Zeitgeber
Aktualisiert: November 2007
Timer sind kompakte Objekte, mit denen angegeben werden kann, dass ein Delegat zu einem bestimmten Zeitpunkt aufgerufen werden soll. Der Wartevorgang wird von einem Thread im Threadpool ausgeführt.
Die Verwendung der Timer-Klasse ist einfach. Sie erstellen einen Timer, der einen TimerCallback-Delegaten an die Rückrufmethode übergibt, ein Objekt, das den an den Rückruf zu übergebenden Zustand darstellt, einen Zeitpunkt für den ersten Aufruf und eine Zeitspanne, die das Intervall zwischen den Aufrufen des Rückrufs darstellt. Um einen anstehenden Timer zu löschen, rufen Sie die Timer.Dispose-Funktion auf.
Hinweis: |
---|
Es gibt zwei weitere Zeitgeberklassen. Die System.Windows.Forms.Timer-Klasse ist ein Steuerelement, dass mit visuellen Designern arbeitet und für die Verwendung im Benutzeroberflächenkontext vorgesehen ist. Es löst Ereignisse für den Benutzeroberflächenthread aus. Die System.Timers.Timer-Klasse ist von Component abgeleitet und kann daher mit visuellen Designern verwendet werden. Sie löst ebenfalls Ereignisse aus, jedoch für einen ThreadPool-Thread. Die System.Threading.Timer-Klasse nimmt Rückrufe für einen ThreadPool-Thread vor und verwendet das Ereignismodell nicht. Im Gegensatz zu anderen Zeitgebern stellt sie der Rückrufmethode auch ein Zustandsobjekt bereit. Dies ist eine sehr einfache Klasse. |
Im folgenden Codebeispiel wird ein Zeitgeber gestartet, der nach einer Sekunde (1000 Millisekunden) startet und jede Sekunde hochzählt, bis die Enter-Taste gedrückt wird. Bei der Variablen mit dem Verweis auf den Zeitgeber handelt es sich um ein Feld auf Klassenebene, um zu verhindern, dass der Zeitgeber während der Ausführung von der Garbage Collection erfasst wird. Weitere Informationen über die aggressive Garbage Collection finden Sie unter KeepAlive.
Imports System
Imports System.Threading
Public Class Example
Private Shared ticker As Timer
Public Shared Sub TimerMethod(state As Object)
Console.Write(".")
End Sub
Public Shared Sub Main()
ticker = New Timer(AddressOf TimerMethod, Nothing, 1000, 1000)
Console.WriteLine("Press the Enter key to end the program.")
Console.ReadLine()
End Sub
End Class
using System;
using System.Threading;
public class Example
{
private static Timer ticker;
public static void TimerMethod(Object state)
{
Console.Write(".");
}
public static void Main()
{
ticker = new Timer(TimerMethod, null, 1000, 1000);
Console.WriteLine("Press the Enter key to end the program.");
Console.ReadLine();
}
}