Simuler son propre temps et ses timer [Résolu]

suprascio 3 Messages postés jeudi 11 juin 2009Date d'inscription 19 novembre 2009 Dernière intervention - 16 nov. 2009 à 10:26 - Dernière réponse : suprascio 3 Messages postés jeudi 11 juin 2009Date d'inscription 19 novembre 2009 Dernière intervention
- 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
Afficher la suite 

Votre réponse

7 réponses

krimog 1863 Messages postés lundi 28 novembre 2005Date d'inscription 14 février 2015 Dernière intervention - 19 nov. 2009 à 11:42
+3
Utile
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é ! -
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de krimog
Miltiades 233 Messages postés vendredi 21 mars 2003Date d'inscription 25 octobre 2010 Dernière intervention - 16 nov. 2009 à 11:26
0
Utile
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...
Commenter la réponse de Miltiades
suprascio 3 Messages postés jeudi 11 juin 2009Date d'inscription 19 novembre 2009 Dernière intervention - 16 nov. 2009 à 11:32
0
Utile
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
Commenter la réponse de suprascio
cboulas 2641 Messages postés mercredi 2 juin 2004Date d'inscription 8 janvier 2014 Dernière intervention - 16 nov. 2009 à 13:31
0
Utile
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
Commenter la réponse de cboulas
billou_13 874 Messages postés jeudi 4 mars 2004Date d'inscription 19 août 2014 Dernière intervention - 19 nov. 2009 à 09:59
0
Utile
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
---------------------
Commenter la réponse de billou_13
billou_13 874 Messages postés jeudi 4 mars 2004Date d'inscription 19 août 2014 Dernière intervention - 19 nov. 2009 à 10:06
0
Utile
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
---------------------
Commenter la réponse de billou_13
suprascio 3 Messages postés jeudi 11 juin 2009Date d'inscription 19 novembre 2009 Dernière intervention - 19 nov. 2009 à 15:29
0
Utile
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 :)
Commenter la réponse de suprascio

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.