Je cherche l’équivalent de la fonction setTimeout en Javascript pour C#. C’est en fait pour simuler du lag en réseau local (protocoles de tests, quand tu nous tiens).
Pour le packet loss je sais comment faire (je dis a mon programme d’oublier d’envoyer certains packets) mais pour le lag, il faudrait en fait que j’ai une fonction qui dise “déclenche l’envoi du message dans x temps” (ou x est un temps aléatoire).
myTimer = new System.Timers.Timer();
myTimer.Elapsed += new ElapsedEventHandler (maFonction);
myTimer.Interval = 300000;
myTimer.Start();
L’intervalle est en millisecondes , du coup ça fait 5 minutes là !
Attention , maFonction est tout de meme un evenement donc sa signature est du genre :
private void maFonction ( object source , ElapsedEventArgs e )
{
//je fais ce que je veux , avec mes cheveux
}
Voila , msdn rules , j’ai trouvé ça en environ 3 secondes quand j’en ai eu besoin
[quote name=‘gniii’ date=’ ton pseudo casse le BBCode’]Euh juste une question comme ca: on peut pas transmettre des paramètres a maFonction?
[right][post=“337554”]<{POST_SNAPBACK}>[/post][/right][/quote]
System.Timers.Timer est assez buggé…
Ce bug est toujours d’actualité avec le .NET Framework beta 2.0.40607.
Il suffit de l’initialiser avec un WaitCallback TimerCallback et un objet d’état à balancer dans le callback.
Donc oui, avec un System.Threading.Timer tu peux lui balancer des paramètres.
[quote name=‹ Ge-Off › date=’ 2 Mar 2005, 16:19’]System.Timers.Timer est assez buggé…
Ce bug est toujours d’actualité avec le .NET Framework beta 2.0.40607.
(…)
[right][post=« 337647 »]<{POST_SNAPBACK}>[/post][/right][/quote]
Ah, apparemment, je suis pas le seul a avoir eu des problèmes
Sinon, ouais, System.Threading.Timer est mieux… attention, cependant, quand tu l’utilise avec l’UI, le callback est pas toujours appellé dans le thread qui gère l’UI, et il est vraiment pas conseillé de modifier l’UI hors de son thread (voire Form.Invoke())
Il faut surtout plutot utiliser System.Windows.Forms.Timer qui est fait pour. Il y a trois classes de Timer, chacun a ses utilisations, c’est pas un bug
Je supposais juste que, étant une appli réseau, il l’a surement conçue sous forme d’un service windows ou d’une appli console, donc le System.Windows.Forms.Timer est exclu.
J’ai rencontré le problème de System.Timers.Timer dans l’un de mes services Windows, et, contrairement à ce que dit la KB (certes, c’est du .net 2.0 beta), également dans une appli fenêtrée proto du service (pour émuler un service windows, faciliter le développement et le debugging).
[quote name=’[PERE]Cil’ date=’ 3 Mar 2005, 03:54’]Je confirmes, pas de Forms en vue
[right][post=« 337880 »]<{POST_SNAPBACK}>[/post][/right][/quote]
Non mais je repondais a Tzim pour le coup du « il faut que ca s’execute dans le thread de UI ». Pour ton cas il te faut ou System.Timers.Timer ou System.Threading.Timer selon ce que tu veux, surement le deuxiemme. Pour vraiment comprendre les diff, il te faut lire la doc et le lien que j’ai file hehe