Cette page vous a-t-elle été utile ?
Votre avis sur ce contenu est important. N'hésitez pas à nous faire part de vos commentaires.
Vous avez d'autres commentaires ?
1500 caractères restants
Exporter (0) Imprimer
Développer tout
Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

Timer, classe

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

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

[HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization = true, 
	ExternalThreading = true)]
public class Timer : Component, ISupportInitialize

Le type Timer expose les membres suivants.

  NomDescription
Méthode publiqueTimer()Initialise une nouvelle instance de la classe Timer et affecte à toutes les propriétés leurs valeurs initiales.
Méthode publiqueTimer(Double)Initialise une nouvelle instance de la classe Timer et affecte le nombre spécifié de millisecondes à la propriété Interval.
Début

  NomDescription
Propriété publiqueAutoResetObtient ou définit une valeur indiquant si Timer doit déclencher l'événement Elapsed chaque fois que l'intervalle spécifié expire ou uniquement la première fois.
Propriété protégéeCanRaiseEventsObtient une valeur qui indique si le composant peut déclencher un événement. (Hérité de Component.)
Propriété publiqueContainerObtient le IContainer qui contient Component. (Hérité de Component.)
Propriété protégéeDesignModeObtient une valeur qui indique si Component est actuellement en mode design. (Hérité de Component.)
Propriété publiqueEnabledObtient ou définit une valeur indiquant si Timer doit déclencher l'événement Elapsed.
Propriété protégéeEventsObtient la liste des gestionnaires d'événements attachés à ce Component. (Hérité de Component.)
Propriété publiqueIntervalObtient ou définit l'intervalle auquel l'événement Elapsed doit être déclenché.
Propriété publiqueSiteInfrastructure. Obtient ou définit le site qui lie le Timer à son conteneur en mode design. (Substitue Component.Site.)
Propriété publiqueSynchronizingObjectObtient ou définit l'objet utilisé pour marshaler les appels du gestionnaire d'événements qui sont émis lorsqu'un intervalle a expiré.
Début

  NomDescription
Méthode publiqueBeginInitDébute l'initialisation au moment de l'exécution d'un Timer qui est utilisé sur un formulaire ou par un autre composant.
Méthode publiqueCloseLibère les ressources utilisées par le Timer.
Méthode publiqueCreateObjRefCrée un objet contenant toutes les informations appropriées requises pour générer un proxy permettant de communiquer avec un objet distant. (Hérité de MarshalByRefObject.)
Méthode publiqueDispose()Libère toutes les ressources utilisées par Component. (Hérité de Component.)
Méthode protégéeDispose(Boolean)Infrastructure. Libère toutes les ressources utilisées par le Timer en cours. (Substitue Component.Dispose(Boolean).)
Méthode publiqueEndInitMet fin à l'initialisation au moment de l'exécution d'un Timer qui est utilisé sur un formulaire ou par un autre composant.
Méthode publiqueEquals(Object)Détermine si l'objet spécifié est identique à l'objet actuel. (Hérité de Object.)
Méthode protégéeFinalizeLibère les ressources non managées et exécute d'autres opérations de nettoyage avant la récupération de Component par le garbage collection. (Hérité de Component.)
Méthode publiqueGetHashCodeSert de fonction de hachage par défaut. (Hérité de Object.)
Méthode publiqueGetLifetimeServiceRécupère l'objet de service de durée de vie en cours qui contrôle la stratégie de durée de vie de cette instance. (Hérité de MarshalByRefObject.)
Méthode protégéeGetServiceRetourne un objet qui représente un service fourni par Component ou par son Container. (Hérité de Component.)
Méthode publiqueGetTypeObtient le Type de l'instance actuelle. (Hérité de Object.)
Méthode publiqueInitializeLifetimeServiceObtient un objet de service de durée de vie pour contrôler la stratégie de durée de vie de cette instance. (Hérité de MarshalByRefObject.)
Méthode protégéeMemberwiseClone()Crée une copie superficielle de l'objet Object actuel. (Hérité de Object.)
Méthode protégéeMemberwiseClone(Boolean)Crée une copie superficielle de l'objet MarshalByRefObject actuel. (Hérité de MarshalByRefObject.)
Méthode publiqueStartLance le déclenchement de l'événement Elapsed en affectant true à Enabled.
Méthode publiqueStopArrête le déclenchement de l'événement Elapsed en affectant false à Enabled.
Méthode publiqueToStringRetourne String contenant le nom du Component, s'il existe. Cette méthode ne doit pas être substituée. (Hérité de Component.)
Début

  NomDescription
Événement publicDisposedSe produit lorsque le composant est supprimé par un appel à la méthode Dispose. (Hérité de Component.)
Événement publicElapsedSe produit lorsque l'intervalle est écoulé.
Début

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 ensuite gérer cet événement de sorte qu'il fournisse 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.

Le composant Timer déclenche l'événement Elapsed, en fonction de la valeur de la propriété Interval. Vous pouvez gérer l'événement de sorte qu'il exécute le traitement requis. Supposons, par exemple, que vous disposiez d'une application de vente en ligne qui publie en permanence des commandes dans une base de données. Le service qui compile les instructions de livraison traite les commandes par lot plutôt que de façon individuelle. 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.

Dans .NET Framework version 2.0 et versions antérieures, le composant Timer intercepte et supprime toutes les exceptions levées par les gestionnaires d'événements pour l'événement Elapsed. Ce comportement fait l'objet de modifications pour les versions futures du .NET Framework.

Si la propriété SynchronizingObject a la valeur null, 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. Dans cette situation, 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.

Même si SynchronizingObject n'a pas la valeur null, les événements Elapsed peuvent se produire une fois la méthode Dispose ou Stop appelée ou une fois la propriété Enabled définie à false, car le signal destiné à déclencher l'événement Elapsed est toujours mis en file d'attente pour être exécuté sur un thread de pool de threads. Un moyen de résoudre cette condition de concurrence critique est de définir un indicateur indiquant au gestionnaire d'événements de l'événement Elapsed d'ignorer les événements suivants.

Si vous utilisez le Timer avec un élément d'interface utilisateur, tel qu'un formulaire ou un contrôle, sans placer la minuterie sur cet élément de l'interface utilisateur, assignez le formulaire ou le contrôle qui contient le 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.

RemarqueRemarque

L'attribut HostProtectionAttribute appliqué à ce type ou membre 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.

L'exemple de code suivant configure un gestionnaire d'événements pour l'événement Timer.Elapsed, puis crée et démarre la minuterie (Timer). Le gestionnaire d'événements affiche la propriété SignalTime chaque fois que l'événement est déclenché.

RemarqueRemarque

Le code contient des déclarations de la variable de minuterie au niveau de la classe et à l'intérieur de Main. Pour voir comment le garbage collection agressif peut affecter une minuterie déclarée à l'intérieur d'une méthode de longue durée, vous pouvez mettre en commentaire la déclaration au niveau de la classe et annuler les marques de commentaire de la variable locale. Pour éviter de collecter la minuterie, annulez les marques de commentaire de la méthode GC.KeepAlive à la fin de Main.


using System;
using System.Timers;

public class Timer1
{
    private static System.Timers.Timer aTimer;

    public static void Main()
    {
        // Normally, the timer is declared at the class level,
        // so that it stays in scope as long as it is needed.
        // If the timer is declared in a long-running method,  
        // KeepAlive must be used to prevent the JIT compiler 
        // from allowing aggressive garbage collection to occur 
        // before the method ends. You can experiment with this
        // by commenting out the class-level declaration and 
        // uncommenting the declaration below; then uncomment
        // the GC.KeepAlive(aTimer) at the end of the method.
        //System.Timers.Timer aTimer;

        // Create a timer with a ten second interval.
        aTimer = new System.Timers.Timer(10000);

        // 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();

        // If the timer is declared in a long-running method, use
        // KeepAlive to prevent garbage collection from occurring
        // before the method ends.
        //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("The Elapsed event was raised at {0}", e.SignalTime);
    }
}

/* This code example produces output similar to the following:

Press the Enter key to exit the program.
The Elapsed event was raised at 5/20/2007 8:42:27 PM
The Elapsed event was raised at 5/20/2007 8:42:29 PM
The Elapsed event was raised at 5/20/2007 8:42:31 PM
...
 */


.NET Framework

Pris en charge dans : 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (rôle principal du serveur non pris en charge), Windows Server 2008 R2 (rôle principal du serveur pris en charge avec SP1 ou version ultérieure ; Itanium non pris en charge)

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

Tous les membres static publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Ajouts de la communauté

AJOUTER
Afficher:
© 2015 Microsoft