Fiabilité chronomètre
Fermé
amiralS
Messages postés
46
Date d'inscription
samedi 26 octobre 2013
Statut
Membre
Dernière intervention
21 février 2020
-
20 févr. 2020 à 18:39
Utilisateur anonyme - 21 févr. 2020 à 06:39
Utilisateur anonyme - 21 févr. 2020 à 06:39
A voir également:
- Fiabilité chronomètre
- Telecharger chronometre pc - Télécharger - Personnalisation
- Chronometre contraction - Télécharger - Santé & Bien-être
- Instant gaming fiabilité ✓ - Forum Jeux vidéo
- Cdiscount avis fiabilité ✓ - Forum Consommation & Internet
- La prochaine mise à jour des fonctionnalités de windows, comprenant des améliorations de la fiabilité, des performances et de sécurité, est prête. - Forum Windows 10
5 réponses
amiralS
Messages postés
46
Date d'inscription
samedi 26 octobre 2013
Statut
Membre
Dernière intervention
21 février 2020
2
21 févr. 2020 à 00:07
21 févr. 2020 à 00:07
Merci beaucoup d'avoir pris le temps de me donner toutes ces explications.
Je vais me lancer sur les pistes que tu m'as données mais pas avant une bonne nuit de sommeil.
Je reviendrai sur le forum dès que possible en fonction de ma vitesse d'assimilation de toutes ces notions qui sont nouvelles pour moi.
Encore merci et à bientôt
AmiralS
Je vais me lancer sur les pistes que tu m'as données mais pas avant une bonne nuit de sommeil.
Je reviendrai sur le forum dès que possible en fonction de ma vitesse d'assimilation de toutes ces notions qui sont nouvelles pour moi.
Encore merci et à bientôt
AmiralS
Utilisateur anonyme
21 févr. 2020 à 06:39
21 févr. 2020 à 06:39
Le meilleur conseil que je puisse te donner c’est de mettre ton projet de côté quelques jours, le temps de suivre un cours en ligne pour acquérir les bases de C#.
Celui de Tahé est très bien https://tahe.developpez.com/dotnet/csharp/
Il ne fera pas de toi un codeur expert mais te donnera le socle nécessaire à ta formation
Celui de Tahé est très bien https://tahe.developpez.com/dotnet/csharp/
Il ne fera pas de toi un codeur expert mais te donnera le socle nécessaire à ta formation
Utilisateur anonyme
20 févr. 2020 à 20:50
20 févr. 2020 à 20:50
Bonsoir
pour poster un code, voir ce petit tuto https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
As tu utilisé un timer?
pour poster un code, voir ce petit tuto https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
As tu utilisé un timer?
amiralS
Messages postés
46
Date d'inscription
samedi 26 octobre 2013
Statut
Membre
Dernière intervention
21 février 2020
2
20 févr. 2020 à 21:10
20 févr. 2020 à 21:10
Bonsoir,
Oui j'ai utilisé un Timer.
Oui j'ai utilisé un Timer.
using System; using System.Windows.Forms; namespace Chronometre { public partial class Form_Chrono : Form { public Form_Chrono() { InitializeComponent(); } int h= 0; int m = 0; int s = 0; int ms = 0; private void timer_Tick(object sender, System.EventArgs e) { ms++; lab_Mili.Text = ms.ToString(); if (ms >= 10) { ms = 0; s++; lab_S.Text = s.ToString(); lab_Mili.Text = ms.ToString(); } if (s >= 10) { s = 0; m++; lab_M.Text = m.ToString(); lab_S.Text = s.ToString(); } if (m >= 60) { m = 0; h++; lab_H.Text = h.ToString(); lab_M.Text = m.ToString(); } } private void bt_demarrer_Click(object sender, System.EventArgs e) { timer.Enabled = true; timer.Interval = 100; timer.Tick += new EventHandler(timer_Tick); timer.Start(); } private void bt_stop_Click(object sender, System.EventArgs e) { timer.Stop(); } private void bt_reprendre_Click(object sender, System.EventArgs e) { timer.Start(); } private void Bt_Split_Click(object sender, System.EventArgs e) { } private void bt_raz_Click(object sender, System.EventArgs e) { timer.Stop(); timer.Dispose(); ms = 0; s = 0; m = 0; h = 0; } } }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Utilisateur anonyme
20 févr. 2020 à 23:42
20 févr. 2020 à 23:42
Un timer ne répète pas un code à intervalle régulier.
Il exécute son code, puis attend un certain temps, et l’exécute à nouveau.
C’est le temps d’attente qui est stable.
Par contre le temps d’exécution de son code ne l’est pas.
Tu affiches des valeurs, dans des textbox, cependant le thread d’affichage peut être occupé ailleurs.
Du coup, l’exécution du code du timer attend que le textbox soit renseigné pour passer à l’instruction suivante.
Un coup, tout le code sera exécuté en disons 3 ms, la fois d’après en 5 ms et une autre fois en 2.
Une solution consiste à mesurer le temps d’exécution du code du timer (avec un stopwatch) et d’ajuster l’intervalle à chaque itération.
Seulement, il y a une limite à cette méthode.
Admettons que tu veuilles être précis à 10 ms, le code du timer ne pourras pas excéder ce temps, cela impliquerait qu’il doit redémarrer avant d’avoir finit. Et je te l’ai expliqué plus haut, un timer ne marche pas comme ça.
Une bonne solution est d’utiliser un thread et un stopwatch.
Au click tu lances le stopwatch, puis le thread.
Le thread va régulièrement lire le stopwatch sans l’arrêter.
Il transmet la mesure au thread d’affichage, attention tu n’as pas le droit d'accéder directement à un contrôle depuis un thread, tu auras une erreur.
Il faut gérer avec un dispatcher et des invoke.
Au click suivant, tu arrêtes le stopwatch, tu arrêtes le thread et tu affiches la valeur chronométrée.
Le rafraîchissement ne sera peut-être pas tout à fait exact, mais bien mieux qu’un timer. Et la valeur finale, elle sera ce que le pc, et ton doigt font de mieux.
Il y a un tuto sur les pool de thread sur développez.com, il est en 4 parties.
Ce problème et une implémentation de solution y sont abordés.
Par contre, le multi thread c’est un peu compliqué pour un débutant.
Ps: il y a des types exprès pour représenter le temps: DateTime et TimeSpan, et ils permettent une représentation en string parfaitement personnalisable sans réinventer le système sexagésimal.
Il exécute son code, puis attend un certain temps, et l’exécute à nouveau.
C’est le temps d’attente qui est stable.
Par contre le temps d’exécution de son code ne l’est pas.
Tu affiches des valeurs, dans des textbox, cependant le thread d’affichage peut être occupé ailleurs.
Du coup, l’exécution du code du timer attend que le textbox soit renseigné pour passer à l’instruction suivante.
Un coup, tout le code sera exécuté en disons 3 ms, la fois d’après en 5 ms et une autre fois en 2.
Une solution consiste à mesurer le temps d’exécution du code du timer (avec un stopwatch) et d’ajuster l’intervalle à chaque itération.
Seulement, il y a une limite à cette méthode.
Admettons que tu veuilles être précis à 10 ms, le code du timer ne pourras pas excéder ce temps, cela impliquerait qu’il doit redémarrer avant d’avoir finit. Et je te l’ai expliqué plus haut, un timer ne marche pas comme ça.
Une bonne solution est d’utiliser un thread et un stopwatch.
Au click tu lances le stopwatch, puis le thread.
Le thread va régulièrement lire le stopwatch sans l’arrêter.
Il transmet la mesure au thread d’affichage, attention tu n’as pas le droit d'accéder directement à un contrôle depuis un thread, tu auras une erreur.
Il faut gérer avec un dispatcher et des invoke.
Au click suivant, tu arrêtes le stopwatch, tu arrêtes le thread et tu affiches la valeur chronométrée.
Le rafraîchissement ne sera peut-être pas tout à fait exact, mais bien mieux qu’un timer. Et la valeur finale, elle sera ce que le pc, et ton doigt font de mieux.
Il y a un tuto sur les pool de thread sur développez.com, il est en 4 parties.
Ce problème et une implémentation de solution y sont abordés.
Par contre, le multi thread c’est un peu compliqué pour un débutant.
Ps: il y a des types exprès pour représenter le temps: DateTime et TimeSpan, et ils permettent une représentation en string parfaitement personnalisable sans réinventer le système sexagésimal.
Note, qu’en remplaçant le thread par un timer, et avec un seul textbox qui affiche le TimeSpan du stopwatch, ça devrait être assez stable au rafraîchissement.
Et comme le timer (s’il est lancé depuis le formulaire) est dans le Thread principal, pas d’erreur crss thread lors de l’affectation des contrôles.
Et comme le timer (s’il est lancé depuis le formulaire) est dans le Thread principal, pas d’erreur crss thread lors de l’affectation des contrôles.