Einführung in serverbasierte Zeitgeber

Aktualisiert: November 2007

Serverbasierte Zeitgeber bieten die Möglichkeit, ein periodisches Intervall festzulegen, in dem ein Ereignis in der Anwendung ausgelöst wird. Anschließend können durch dieses Ereignis dann regelmäßig wiederkehrende Verarbeitungsschritte ausgeführt werden. Angenommen, ein unternehmenswichtiger Server muss rund um die Uhr und sieben Tage die Woche ausgeführt werden. In diesem Fall könnten Sie einen Dienst erstellen, der den unternehmenswichtigen Server mittels eines Zeitgebers regelmäßig überprüft und sicherstellt, dass das System ordnungsgemäß hochgefahren ist und läuft. Wenn das System nicht reagiert, kann der Dienst versuchen, den Server neu zu starten oder einen Administrator zu benachrichtigen.

Hinweis:

Intervalle für Serverzeitgeber werden in Millisekunden angegeben.

Serverzeitgeber, Windows-Zeitgeber und Threadzeitgeber

Es gibt drei Zeitgebersteuerelemente in Visual Studio und .NET Framework:

  • Ein severbasierter Zeitgeber, den Sie der Toolbox hinzufügen können

  • Ein Windows-basierter Zeitgeber, der grundsätzlich in der Toolbox vorhanden ist

  • Ein Threadzeitgeber, der programmgesteuert verfügbar ist

Dieser Windows-basierte Zeitgeber ist für die Verwendung in Windows Forms-Anwendungen optimiert. Beim serverbasierten Zeitgeber handelt es sich um eine aktualisierte Version des herkömmlichen Zeitgebers, die für die Ausführung in Serverumgebungen optimiert wurde. Der Threadzeitgeber ist ein einfacher und kompakter Zeitgeber, der anstelle von Ereignissen Rückrufmethoden verwendet und von Threadpoolthreads verarbeitet wird.

Die Win32-Architektur bietet zwei Arten von Threads: UI-Threads und Arbeitsthreads. UI-Threads befinden sich die meiste Zeit im Leerlauf und warten darauf, dass Meldungen in den zugehörigen Meldungsschleifen eingehen. Sobald eine Meldung empfangen wird, wird sie behandelt. Anschließend kehrt der Thread wieder in den Wartezustand zurück, bis die nächste Meldung eingeht. Arbeitsthreads werden im Gegensatz dazu für die Hintergrundverarbeitung eingesetzt und verwenden keine Meldungsschleifen. Sowohl der Windows-Zeitgeber als auch der serverbasierte Zeitgeber werden mit einer Interval-Eigenschaft ausgeführt. Das Intervall des Threadzeitgebers wird im Timer-Konstruktor festgelegt. Die Timer wurden für unterschiedliche Zwecke entwickelt, die sich aus ihrer Threadbehandlung ergeben:

  • Der Windows-Zeitgeber ist für Singlethreaded-Umgebungen konzipiert, in denen UI-Threads für die Verarbeitung verwendet werden. Die Genauigkeit von Windows-Zeitgebern ist auf 55 Millisekunden beschränkt. Für diese traditionellen Zeitgeber müssen bestimmte Voraussetzungen erfüllt sein: Dem Benutzercode muss eine UI-Meldungsverteilschleife zur Verfügung stehen, und er muss stets vom selben Thread aus arbeiten, oder der Aufruf muss mittels Marshalling auf einen anderen Thread übertragen werden. Bei einer COM-Komponente würden diese Anforderungen sich leistungsmindernd auswirken.

  • Der serverbasierte Zeitgeber wurde für die Verwendung mit Arbeitsthreads in Multithreaded-Umgebungen entworfen. Da sie eine andere Architektur verwenden, haben serverbasierte Zeitgeber ein wesentlich höheres Genauigkeitspotenzial als Windows-Zeitgeber. Serverzeitgeber können threadübergreifend arbeiten, um ausgelöste Ereignisse zu behandeln.

  • Der Threadzeitgeber ist zweckmäßig in Szenarien, in denen Meldungen nicht unter Verwendung einer Verteilschleife an den Thread übergeben werden. Der Windows-Zeitgeber benötigt beispielsweise die Unterstützung des Betriebssystemzeitgebers, und wenn Sie Meldungen nicht unter Verwendung der Verteilschleife an den Thread übergeben, findet das mit dem Zeitgeber verbundene Ereignis nicht statt. In diesem Fall ist ein Threadzeitgeber zweckmäßiger.

Der Windows-Zeitgeber befindet sich im System.Windows.Forms-Namespace, der Serverzeitgeber im System.Timers-Namespace und der Threadzeitgeber im System.Threading-Namespace.

Siehe auch

Aufgaben

Gewusst wie: Erstellen von Instanzen für serverbasierte Zeitgeber

Gewusst wie: Überwachen serverbasierter Zeitgeber

Konzepte

Programmierarchitektur für Zeitgeber

Zeitgeber

Verwalteter Threadpool

Referenz

Übersicht über die Timer-Komponente (Windows Forms)