Chronometrer ma do loop en .net

Résolu
pinje Messages postés 129 Date d'inscription vendredi 25 juillet 2003 Statut Membre Dernière intervention 24 août 2006 - 13 févr. 2006 à 17:59
 Utilisateur anonyme - 14 févr. 2006 à 00:19
Bonjour a tous,

Je developpe une appli et j'aimerais indiquer a l'utilisateur le temps restant avant l'execution de ma do loop.

Or je comprends pas trop comment utiliser les formats de date de vb.net, est ce que je dois declarer mes variable as Date ou DateTime?

Voici une example de ce que je voudrais faire mais qui marche pas:

Dim ClockStartLoop As DateTime
dim Timeloop as DateTime
'-----------------------------------------------
for  loopCounter = 0 to numLoop

ClockStartLoop =Now

'ici y a plein de calcul

'montrer ici le temps restant mais ca marche pas
'Le temps pour faire une loop:
Timeloop =TimeOfDay.Subtract(ClockStartLoop)

'que j'aimerais multiplier par le nombre de loop restante???
debug.writeLine(Timeloop *(numLoop-LoopCounter))

Next
'-----------------------------------------------


Le truc c'est qu'on peut pas multipler un laps de temps....

Bref toutes les idees sont les bienvenues......

Merci

Jeremy

5 réponses

Utilisateur anonyme
13 févr. 2006 à 23:02
Utilise le constructeur de DateTime pour l'initialiser avec le temps.

Dim TimeRemainingSec As Double
Dim TimeLeft As DateTime

'Calcul du temps restant pour finir les calculs
TimeRemainingSec = Timeloop.TotalSeconds * (numLoop - loopCounter)
TimeLeft = New DateTime(CLng(TimeRemainingSec * 10000000)) '// *10000000 car il faut mettre des 100-nanosecondes

Kenji
<hr size="2" width="100%">
Merci de cliquer sur "Réponse acceptée" si une réponse vous convient.
3
Utilisateur anonyme
13 févr. 2006 à 19:31
Salut

Subtract renvoie un TimeSpan, il faut donc que Timeloop soit un timeSpan.
Quand tu veux multiplier le temps par le nombre de loop restant, là je n’ai pas trop compris ce que tu voulais dire, mais je pense que tu parlais surement des secondes.
Ca donne:

Dim ClockStartLoop As DateTime = Now
Dim Timeloop As TimeSpan
For loopCounter As Integer = 0 To numLoop
'--> ici y a plein de calcul <--
Timeloop = Now.Subtract(ClockStartLoop)
Debug.WriteLine((Timeloop.TotalSeconds * (numLoop - loopCounter)).ToString)
Next loopCounter

Kenji
<hr size="2" width="100%">
Merci de cliquer sur "Réponse acceptée" si une réponse vous convient.
0
pinje Messages postés 129 Date d'inscription vendredi 25 juillet 2003 Statut Membre Dernière intervention 24 août 2006
13 févr. 2006 à 21:23
Kenji,

Merci beaucoup pour ta reponse, je cherchais bien a savoir le nombre de secondes pour que ma loop se fasse, ensuite je multiplie ce temps par le nombre de loop restantes pour savoir le temps qu'il reste avant la fin des calculs...

Par contre, une fois obtenu le nombre de secondes restantes, comment fait on pour les convertir au format HH:mm:ss??

J'ai essayer ca mais ca ne marche pas:

Dim TimeRemainingSec As Double
Dim TimeLeft As DateTime

'Calcul du temps restant pour finir les calculs
TimeRemainingSec = (timeForOneLoop) * (numLoop - LoopCounter)

TimeLeft.AddSeconds(TimeRemainingSec)

'C'est la que ca marche pas:
Call DisplayProgress(Format(TimeLeft, "HH:mm:ss")

Merci,

Jeremy
0
pinje Messages postés 129 Date d'inscription vendredi 25 juillet 2003 Statut Membre Dernière intervention 24 août 2006
13 févr. 2006 à 23:34
Merci beaucoup pour ton aide, ca m'a bien aide...

Derniere question toute bete mais qu'a rien a voir avec l'original, comment fais tu pour mettre ton code en couleur?? j'ai deja essaye le
 mais ca marche pas!!!!


Merci

Jeremy
0

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

Posez votre question
Utilisateur anonyme
14 févr. 2006 à 00:19
Ah, ben ca,
La seul façon pour que ca marche (chez moi), c'est de passer par Word. Copier-coller le texte de vb.net vers Word, puis de re-copier-coller le texte de Word vers ici. Le seul ennui, c'est que y'a un intervalle de ligne trop grand, et je n'arrive pas à l'enlever.
Exemple:


For
loopCounter As Integer
= 0 To numLoop



'--> ici y a
plein de calcul <--



Timeloop = Now.Subtract(ClockStartLoop)

Voilà, c'est pas très pratique a voir.
Surtout, qu'une fois sur trois, la mise-en-forme disparait.

Sinon, la meilleur technique, pour que ca marche, comme j'ai fais plus haut, c'est de le faire manuellement. Mais bon, je le fais que quand j'ai du temps et quand il y a peu de code. Sinon on y passe 3 heurs

Voili, voilou

Kenji
<hr size="2" width="100%">
Merci de cliquer sur "Réponse acceptée" si une réponse vous convient.
0
Rejoignez-nous