Exporter (0) Imprimer
Développer tout

Timer, classe

Génère des événements récurrents dans une application.

Espace de noms : System.Timers
Assembly : System (dans system.dll)

public class Timer : Component, ISupportInitialize
public class Timer extends Component implements ISupportInitialize
public class Timer extends Component implements ISupportInitialize

RemarqueRemarque

L'attribut HostProtectionAttribute appliqué à cette classe a la valeur de propriété Resources suivante : Synchronization | ExternalThreading. HostProtectionAttribute n'affecte pas les applications bureautiques (qui sont généralement démarrées en double-cliquant sur une icône, en tapant une commande ou en entrant une URL dans un navigateur). Pour plus d'informations, consultez la classe HostProtectionAttribute ou Attributs de programmation et de protection des hôtes SQL Server.

Le composant Timer est une minuterie serveur, qui vous permet de spécifier un intervalle récurrent de déclenchement de l'événement Elapsed dans votre application. Vous pouvez alors gérer cet événement pour procéder à un traitement régulier. Supposez par exemple que vous ayez un serveur critique qui doit fonctionner 24 heures sur 24 et 7 jours sur 7. Vous pourriez créer un service qui utilise Timer pour vérifier le serveur régulièrement et veiller à ce que le système soit en état de fonctionner. Si le système ne répond pas, le service peut tenter de redémarrer le serveur ou en informer un administrateur.

Le Timer serveur est conçu pour être utilisé avec les threads de travail dans un environnement multithread. Les minuteries serveur peuvent se déplacer parmi les threads pour gérer l'événement Elapsed déclenché ; il est ainsi possible d'atteindre une plus grande précision dans le déclenchement des événements qu'avec les minuteries Windows. Pour plus d'informations sur les minuteries serveur, consultez Introduction aux composants Timer serveur.

Le composant Timer déclenche l'événement Elapsed, en fonction de la valeur de la propriété Interval. Vous pouvez gérer cet événement pour procéder au traitement dont vous avez besoin. Supposons par exemple que vous ayez une application de vente en ligne qui publie continuellement des commandes vers une base de données. Le service qui compile les instructions pour l'expédition exécute un lot de commandes plutôt que de traiter chaque commande individuellement. Vous pourriez utiliser un Timer pour démarrer le traitement des lots toutes les 30 minutes.

RemarqueRemarque

Lorsque false est affecté à AutoReset, Timer déclenche l'événement Elapsed une seule fois, après que le premier Interval a expiré. Pour que l'événement Elapsed continue à se déclencher sur Interval, affectez true à AutoReset.

L'événement Elapsed est déclenché sur un thread ThreadPool. Si le traitement de l'événement Elapsed dure plus longtemps que Interval, l'événement peut être déclenché à nouveau sur un autre thread ThreadPool. Par conséquent, le gestionnaire d'événements doit être réentrant.

RemarqueRemarque

La méthode de gestion d'événements peut s'exécuter sur un thread pendant qu'un autre thread appelle la méthode Stop ou définit la propriété Enabled à la valeur false. Cela peut provoquer le déclenchement de l'événement Elapsed après l'arrêt de la minuterie. L'exemple de code correspondant à la méthode Stop illustre une façon d'éviter cette condition de concurrence critique.

Si vous utilisez Timer avec un élément de l'interface utilisateur, tel qu'un formulaire ou un contrôle, assignez le formulaire ou contrôle qui contient Timer à la propriété SynchronizingObject, afin que l'événement soit marshalé pour le thread d'interface utilisateur.

Timer n'est pas visible au moment de l'exécution.

Pour obtenir la liste des valeurs de propriétés initiales d'une instance de Timer, consultez le constructeur Timer.

L'exemple suivant crée Timer qui affiche "Hello World!" dans la console, toutes les cinq secondes.

Utilisez l'espace de noms System.Timers pour cet exemple.

using System;
using System.Timers;

public class Timer1
{
    public static void Main()
    {
        // Normally, the timer is declared at the class level, so
        // that it doesn't go out of scope when the method ends.
        // In this example, the timer is needed only while Main 
        // is executing. However, KeepAlive must be used at the
        // end of Main, to prevent the JIT compiler from allowing 
        // aggressive garbage collection to occur before Main 
        // ends.
        System.Timers.Timer aTimer = new System.Timers.Timer();

        // Hook up the Elapsed event for the timer.
        aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);

        // Set the Interval to 2 seconds (2000 milliseconds).
        aTimer.Interval = 2000;
        aTimer.Enabled = true;
 
        Console.WriteLine("Press the Enter key to exit the program.");
        Console.ReadLine();

        // Keep the timer alive until the end of Main.
        GC.KeepAlive(aTimer);
    }
 
    // Specify what you want to happen when the Elapsed event is 
    // raised.
    private static void OnTimedEvent(object source, ElapsedEventArgs e)
    {
        Console.WriteLine("Hello World!");
    }
}
 

Tous les membres static publics de ce type sont sécurisés pour les opérations multithreads. Il n'est pas garanti que les membres d'instance soient thread-safe.

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Édition Media Center, Windows XP Professionnel Édition x64, Windows XP SP2, Windows XP Starter Edition

Le .NET Framework ne prend pas en charge toutes les versions de chaque plate-forme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise.

.NET Framework

Prise en charge dans : 2.0, 1.1, 1.0

Ajouts de la communauté

AJOUTER
Afficher:
© 2014 Microsoft