Simuler son propre temps et ses timer

Résolu
suprascio Messages postés 3 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 19 novembre 2009 - 16 nov. 2009 à 10:26
suprascio Messages postés 3 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 19 novembre 2009 - 19 nov. 2009 à 15:29
Bonjour,
Je suis en train de développer un simulateur de salle de marché et je dois pour cela simuler on propre temps (ne pas utiliser DateTime globalement).

Mon problème est que je voudrais utiliser un timer qui execute des actions à certaines heures. Rien de plus facile vous me direz, c'est le principe du timer. Mais, ... je voudrais bien pouvoir mettre pause dans ma simulation (c'est mon temps, je fais ce que je veux avec :p) et que cela mette en pause les timers du coup, qu'ils ne s'exécutent pas alors que mon temps est en pause.

Quelqu'un aurait-il une idée? Sachant qu'il faut que ça soit le plus précis possible.

Merci

7 réponses

krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 50
19 nov. 2009 à 11:42
Salut

Ce que tu peux faire, c'est regarder l'heure à laquelle tu mets en pause, regarder l'heure à laquelle tu reprends, et faire le calcul.

En gros, au lancement :
TimeSpan offset = 0;


Mise en pause :
DateTime miseEnPause = DateTime.Now;


Reprise :
offset += DateTime.Now - miseEnPause;


Et tu vois l'heure "fictive" - comme tu dis - à tout moment avec
DateTime heureFictive = DateTime.Now.Subtract(offset);


Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé ! -
3
Miltiades Messages postés 233 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 25 octobre 2010
16 nov. 2009 à 11:26
j'ai du mal a voir ce que tu veux faire, mais si tu veux laisser tourner ton timer, tu peux toujours retirer le délégué associé à l'event tick de ton timer, comme ca, ton timer continuera mais il ne sera plus utilisé...

Nul ne devient grand par la guerre...
0
suprascio Messages postés 3 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 19 novembre 2009
16 nov. 2009 à 11:32
En fait, je cherche à pouvoir lancer une horloge (par exemple je dis start(long ticks) et la un compteur commence comme si il était 15h00 par exemple.
La dessus je crée un Timer en lui disant de s'exécuter une fois dans 1h.
Au bout de 10 minutes que mon compteur (mon horloge) tourne, je la met en stop (il est donc virtuellement 15h10). Sauf que moi je veux que mon timer lance le delegate à 18h (heure fictive de mon compteur).
Je voudrais donc savoir comment faire pour que le timer prenne en compte le fait que j'ai mis le temps en pause.

J'espère que j'ai été un peu plus clair :)

Merci
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
16 nov. 2009 à 13:31
Salut,

Tu peux définir une heure dans un datetime et gérer le tout avec un timestamp ainsi tu aurais comme ligne :

DateTime dtN = new DateTime(01, 01, 1900, 15, 00, 00);
dtN.AddSeconds(1), etc...

Chris...
- La vérité n'est pas ailleurs, elle est sous le nez de chacun, quelques mouvements neuronale permettent de l'entrevoir -
MCPD (webform-winform) / MCSA / MCDST / MCT
0

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

Posez votre question
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
19 nov. 2009 à 09:59
Bonjour,

En gros, si je comprend bien, tu veux pouvoir faire "Timer.Pause" ?
Je pense que tu as gagné de le droit de créer ta propre classe Timer. Cette dernière se servira surement de Timers dans son fonctionnement, c'est pourquoi je te conseille la lecture de ce post si tu veux en savoir plus sur la précision des différents timers utilisables en .Net: http://www.codeproject.com/KB/cs/LP_TimerTest.aspx. Cela devrait te permettre de trouver ton bonheur.

Bon développement,

Billou_13

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
0
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
19 nov. 2009 à 10:06
Re,

Remarque, maintenant que j'y pense, ta propre classe pourra aussi fonctionner en utilisant la date courante.

Bonne journée,

Billou_13

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
0
suprascio Messages postés 3 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 19 novembre 2009
19 nov. 2009 à 15:29
j'utilise QueryPerformanceCounter pour l'instant pour l'heure vu qu'il me faut quelque chose de précis (c'est une salle de marché, on rigole pas avec les ms à la bourse :p )

Sinon, merci pour vos réponses, je pense que je vais faire de la magouille de comptage d'écart entre le pause et la relecture pour simuler le temps en pause :)

Merci encore :)
0