IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

System.Timers.Timer et dérives


Sujet :

C#

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 12
    Points : 8
    Points
    8
    Par défaut System.Timers.Timer et dérives
    Bonjour à tous,

    Je souhaite utiliser un timer dont le déclenchement d'un callback soit asservi sur la période que je renseigne, quelque soit le temps passé par dans le callback déclenché.

    J'ai essayé avec System.Threading.Timer et System.Timers.Timer. Mais apparemment dans les deux cas, la période que je donne correspond au temps entre la fin de l'ancien callback et le début du nouveau. Cela finit par dériver, par ex pour une période de 100ms :
    1.734
    1.843
    1.953
    2.062
    2.171
    2.281
    2.390
    2.500
    2.609
    au lieu de quelque chose du genre
    1.734
    1.843
    1.923
    2.032
    2.141
    2.221
    2.330
    2.440
    2.329
    J'accepte qu'il y ait une imprécision de qq dizaines de ms, mais pas qu'on diverge de la période que je donne.
    Est-ce que le comportement que je constate avec System.Timers.Timer est celui attendu ?
    Est-ce qu'il y a un moyen de paramétrer une classe existante pour qu'elle fasse ce que je veux ?
    Est-ce que je dois me refaire une nouvelle classe ?

    Avec System.Timers.Timer, j'ai fait comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
     
    namespace TimerTester
    {
        class Program
        {
            static void Main(string[] args)
            {
                System.Timers.Timer TestSystemTimersTimer = new System.Timers.Timer();
                TestSystemTimersTimer.AutoReset = true;
                TestSystemTimersTimer.Interval = 100;
                TestSystemTimersTimer.Elapsed += new System.Timers.ElapsedEventHandler(TestTimer_Elapsed);
                TestSystemTimersTimer.Start();
                System.Console.ReadLine();
            }
     
            static void TestTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
            {
                System.Timers.Timer TestTimer = sender as System.Timers.Timer;
                System.Console.WriteLine("{0}.{1}", e.SignalTime.Second, e.SignalTime.Millisecond);
            }
        }
    }

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Points : 1 561
    Points
    1 561
    Par défaut
    tu nous dit que System.Threading.Timer, et tu parle de System.Timers.Timer excuse du peu...

    oui ils dérivent tous. Les seuls à peut prêt "justes" sont imprécis, car on ne peut pas les utiliser à moins de 55ms, et ils nécessitent des fenêtres Windows, donc inaptes à un usage serveur.

    normalement System.Timers.Timer est le seul à peu prêt précis excepté les contrôles Windows.

Discussions similaires

  1. Timers.timer et Webbrowser.documenttitle
    Par JoceM dans le forum Visual Studio
    Réponses: 1
    Dernier message: 05/04/2010, 16h20
  2. Réponses: 5
    Dernier message: 02/09/2008, 10h51
  3. Question sur le Timers.Timer
    Par Elwe31 dans le forum VB.NET
    Réponses: 6
    Dernier message: 23/05/2008, 21h21
  4. [Timer] timer bloqué par une boucle for?
    Par Jidefix dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 18/09/2006, 17h12
  5. [Timer]Timer pas très précis
    Par harold63 dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 25/07/2005, 08h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo