Affichage du temps restant d'un timer

Marneus73 Messages postés 344 Date d'inscription mercredi 24 janvier 2007 Statut Membre Dernière intervention 27 octobre 2008 - 5 juil. 2008 à 22:08
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 - 7 juil. 2008 à 17:57
Bonjour à tous,
Est-il possible d'afficher le temps qui défile lors du compte d'un timer dans un label ?
Merci d'avance

12 réponses

gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
6 juil. 2008 à 00:00
avec de la volonté on peut soulever des montagnes!
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
6 juil. 2008 à 00:09
Boinjour,

et le levier pour la soulever, cette colline (je dirais même ce petit talus) est minuscule  !
Mécanisme :
1) déterminer l'heure finale (heure actuelle + durée déterminée)
2) à chaque "tick" du Timer calculer l'écart entre la nouvelle heure actuelle et l'heure finale et ... l'afficher ...
Pas une ligne de code ici car : d'une très grande simplicité ...
0
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
6 juil. 2008 à 00:22
heu oui mais avant il faut remettre des glacons dans le refroidisseur du cpu
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
6 juil. 2008 à 00:42
Tiens !
VB.Net ferait donc chauffer le processeur avec du si peu, que VB6 fait sans rien faire chauffer ????

Voilà ce qui ne fait pas chauffer le processeur, avec VB6

Private heurefin As Date

Private Sub Command1_Click()
  Timer1.Enabled = True
  Timer1.Interval = 1000
  duree = 100
  heurefin = DateAdd("s", 100, Time)
End Sub



Private Sub Timer1_Timer()
 Label1.Caption = DateDiff("s", Time, heurefin)
End Sub


J'ose espérer que VB.Net (que je ne connais pas) possède au moins l'équivalent et sans rien faire chauffer ...!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
6 juil. 2008 à 01:05
mdr

Dim heurfin
As
String =
"13:25:00"     
'ou ce que tu choisiras tant que c'est exprimé de cette façon (longTimeString)

Private
Sub Form1_Load(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
HandlesMyBase.LoadTimer1.Enabled TrueTimer1.Interval 100

End
Sub

Private
Sub Timer1_Tick(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles Timer1.Tick

If Now.ToShortTimeString = heurfin
ThenTimer1.Enabled =

False

ElseLabel1.Text = DateDiff(

"s", Now.ToLongTimeString, heurfin)

End
If

End
Sub
0
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
6 juil. 2008 à 01:59
"Est-il possible d'afficher le temps qui défile lors du compte d'un timer dans un label ?"




Si ta question est si l'on peut connaitre le temps restant avant que l'événement Tick soit reçu, la réponse (je crois) est non.





gillardg > Une charge CPU importante au mauvais moment, et ton


If

Now.ToShortTimeString = heurfin


Then n'est jamais à True





Private EndTime As Date
Sub Load(...) Handles Me.Load
    endTime = Now.AddSeconds(10)
    Timer.Start
End Sub







Private


Sub

Timer1_Tick(

...

)

Handles

Timer1.Tick
    If Now > endTime Then MsgBox("C'est fini")
    Label1.Text = CInt((Now - endTime).TotalSeconds)
End Sub




Pourquoi travailler les dates avec des strings alors qu'on a les magnifiques structures Date (=DateTime) et TimeSpan en .NET?
0
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
6 juil. 2008 à 02:41
Kevin.Ory ,
 cpu 1%
heu correction fallait pas les secondes 7évident
Dim heurfin As
String = "13:25"     

mon If
Now.ToShortTimeString = heurfin Then
0
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
6 juil. 2008 à 07:22
Non ce que je disais c'est qu'il faudrait utiliser le signe > ou >= au lieu de =
If
Now.ToShortTimeString > heurfin Then

Car il est possible que ta boucle loupe l'heure exact si le CPU est chargé par d'autres processus au même moment. L'utilisation du signe > évite tout risque de "loupage".
0
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
6 juil. 2008 à 10:59
reglé sur 100 ms c'est pas possible qu'il le rate 10 fois mais tu as raison on ne sait jamais
0
Marneus73 Messages postés 344 Date d'inscription mercredi 24 janvier 2007 Statut Membre Dernière intervention 27 octobre 2008
6 juil. 2008 à 23:57
Et un truc dans ce genre:

Dim endwait1 As Double
        endwait1 = Environment.TickCount + ms_to_wait
        While Environment.TickCount < endwait1
            Label.Text = Math.Round((endwait1 - Environment.TickCount) / 1000, 3)
End While

Vous pensez que ça pourrait surcharger le processeur ?
0
Marneus73 Messages postés 344 Date d'inscription mercredi 24 janvier 2007 Statut Membre Dernière intervention 27 octobre 2008
7 juil. 2008 à 00:32
Je crois que là j'ai un truc pas trop mal :

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Timer1.Interval = 1000
        Timer1.Start()

        Timer2.Interval = 10000
        Timer2.Start()

        Fin = Environment.TickCount() + 10000

    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

        Label1.Text = Math.Round((Fin - Environment.TickCount()) / 1000)

    End Sub

    Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick

        Timer2.Stop()
        Timer1.Stop()

    End Sub

Qu'en pensez vous ?
0
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
7 juil. 2008 à 17:57
Ca ressemble à ma solution, sauf que toi tu utilise un 2ème timer pour arreter le 1er. Ma solution est plus simple je trouve, et utilise moins de resources.

Et mon Now - endTime te permet d'afficher le temps restant en h:m:s, alors que ton (Fin - Environment.TickCount()) / 1000 n'affiche qu'une seule unité.
Tu sais qu'un un tick vaut 100 nanoseconde? Donc ton ticks/1000 affiche des 100 microsecondes, c'est le but?
0
Rejoignez-nous