Salut,
Code:
1 2 3 4 5 6 7
|
while (i != 0)
{
interval_counter.Elapsed += new ElapsedEventHandler(OnTimedEvent);
interval_counter.Interval = 60000;
interval_counter.Enabled = true;
} |
Plusieurs remarques :
- où est déclaré "i" ?
- où est initialisé "i" ?
- où tu chope et initialise t1 et t2 ?
- aucune chance que t1 et t2 soient parfaitement identique dans un cas réel, donc i ne vaudra jamais 0, et donc tu va boucler
- A chaque itération tu ré-enregistre le délégué (au premier passage de boucle il sera appelé 1 fois, au second 2 fois, au troisième 3 fois, et ainsi de suite, pas étonnant que tu tue le processeur.
- A chaque itération, tu redéfinit et réactive le timer.
- Le but des timer est justement de ne pas faire de l'attente active (exactement ce que tu fais en faisant une boucle)
(Certaines de ces remarques ont été faites par giova_fr, je les appuie donc)
Ton but c'est de créer un timer, l'initialiser, le démarrer, puis rien foutre jusqu'a ce que le timer émette un tick, ce qui aura lieux à la fin toutes les
Interval millisecondes.
Donc :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
public static void Main()
{
Time tm = new Timer();
tm.Interval = Value; // Valeur lue depuis le fichier et convertie en type int.
tm.Elapsed += OnTimerEvent;
tm.AutoReset = false; // L'évènement ne sera déclenchée qu'une fois, après le timer s'arrête, sauf si tu le relances.
tm.Enabled = true;
/*
* Il reste un problème ici, c'est que juste après cette instruction ton
* programme se termine, je te laisse trouver comment éviter ca, un
* exemple se trouve justement dans la page MSDN que tu as cité.
*/
}
private void OnTimerEvent(object sender, ElapsedEventArgs args)
{
/*
* Ici tu places le code que tu veux exécuter au bout du temps Value.
* Et tu place aussi un moyen d'indiquer a ton application que c'est bon
* elle peux se fermer.
*/
} |