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 :

Logique pour manipuler des timer


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 50
    Points : 28
    Points
    28
    Par défaut Logique pour manipuler des timer
    Bonjour,

    J'aurais besoin d'une aide pour comprendre quelques chose. Mon problème est le suivant :

    J'ai deux Timer, un pour créer des données, l'autre pour les envoyer mais visiblement j'ai pas compris comment ça fonctionnait...

    Voici mon code que j'ai créé juste pour tester. Le but à priori tout simple serait de créer des données tous les timerToCreate et de les envoyer pour affichage tous les timerToSend...

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    private List<int> intList;
     
            public MainWindow()
            {
                InitializeComponent();
                this.intList = new List<int>();
            }
     
            private void timerTest_Click(object sender, RoutedEventArgs e)
            {            
                System.Timers.Timer timerToCreate = new System.Timers.Timer();
                timerToCreate.AutoReset = true;
                timerToCreate.Interval = 5000;
                timerToCreate.Enabled = true;
     
                System.Timers.Timer timerToSend = new System.Timers.Timer();
                timerToSend.AutoReset = true;
                timerToSend.Interval = 2000;
                timerToSend.Enabled = true;
     
     
                timerToCreate.Start();
                timerToCreate.Elapsed += new System.Timers.ElapsedEventHandler(timerToCreate_Elapsed);
     
                timerToSend.Elapsed += new System.Timers.ElapsedEventHandler(newTimer_Elapsed);
                timerToSend.Start();
     
            }
     
            void timerToCreate_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
            {
                for (int x = 0; x < 100000; x++)
                {
                    this.intList.Add(x);
                }
            }
     
            void newTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
            {
                for (int cont = 0; cont < this.intList.Count; cont++)
                {
                    MessageBox.Show(cont.ToString());
                }
            }

  2. #2
    Membre éclairé Avatar de chamamo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    588
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 588
    Points : 735
    Points
    735
    Par défaut
    Tes timers ne vont pas marcher car tu les instancies dans l'événement du bouton, une foie sortie de la méthode ils ne sont plus valables, il faut que tu les déclares au niveau de la classe.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 50
    Points : 28
    Points
    28
    Par défaut
    Merci pour ta réponse.
    J'ai déclaré mes timers dans le constructeur et j'ai viré le bouton parce qu'en fait j'en ai pas besoin...
    Mais les message box qui s'affichent ont toujours la valeur à 0

  4. #4
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Pour interagir avec l'IHM : créer des des instances de Winforms.Timer au lieu de System.timer (event Tick au lieu de Elapsed).

    Au début du traitement de l'event, mettre la propriété Enabled du Timer à false. en fin de traitement, la remettre à true si le timer doit continuer à être actif.

Discussions similaires

  1. Bibli de fct pour manipuler des nbres Complex
    Par Pellekrino dans le forum Bibliothèques
    Réponses: 3
    Dernier message: 09/02/2008, 16h13
  2. Meilleure methode pour manipuler des images
    Par etranger dans le forum Modules
    Réponses: 2
    Dernier message: 16/02/2007, 13h06
  3. API pour manipuler des RPM
    Par pcery dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 07/08/2006, 14h44
  4. Quel langage pour manipuler des entiers très longs ?
    Par mis_dj dans le forum Langages de programmation
    Réponses: 8
    Dernier message: 10/05/2006, 21h12
  5. Delphi 2005 pour manipuler des formulaires MS-Access ??
    Par Mustard007 dans le forum Bases de données
    Réponses: 4
    Dernier message: 18/10/2005, 21h39

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