C# Timer, lequel choisir, lequel fonctionne ?

Inscrit
19 Mai 2013
Messages
68
Reactions
0
#1
Salut tout le monde !

Je viens à vous suite à un problème pour effectuer une action après une pause de X minutes (en cas de serveur complet par exemple, pour enchaîner sur une reconnexion).

Pour ceci, j'utilise un Timer de System.Windows.Forms.Timer, mais ça ne marche pas. Après les X minutes, la méthode n'est pas appelé !

Voici un post que j'ai créé sur StackOverFlow, mais je n'ai pas eu de réponse.

J'espère trouver un solution ici.

Merci d'avance !

Veriditas :)
 

asyade

Membre Actif
Inscrit
26 Avril 2013
Messages
368
Reactions
1
#2
hum, tout simplement System.Threading.Thread.Sleep(ms);
 

Kyu

Staff
Membre du personnel
Inscrit
4 Octobre 2009
Messages
327
Reactions
8
#4
Thread.sleep() bloque le thread courrant, donc si tu veux utiliser ça, il faut le mettre dans un nouveau thread.
 
Inscrit
19 Mai 2013
Messages
68
Reactions
0
#5
jones a dit:
Thread.sleep() bloque le thread courrant, donc si tu veux utiliser ça, il faut le mettre dans un nouveau thread.
Bon ben je vais faire des threads !
 

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
150
#8
jones a dit:
Thread.sleep() bloque le thread courrant, donc si tu veux utiliser ça, il faut le mettre dans un nouveau thread.
Exact, je recommande hbwait.
Code:
Friend Sub hbwait(ByVal ms_to_wait As Long)
        Dim endwait As Double
        endwait = Environment.TickCount + ms_to_wait
        While Environment.TickCount < endwait
            System.Threading.Thread.Sleep(1)
            Application.DoEvents()
        End While
    End Sub
 
Inscrit
10 Mai 2015
Messages
357
Reactions
55
#9
Excusez moi de détériorer le sujet mais je recherche aussi un moyen simple de faire une pause tout en laissant passer les paquets, pour l'instant seulement le timer fonctionne bien chez moi mais le problème c'est que c'est du code assez lourd je trouve, j'ai testé le code d'alexandre mais aucun paquets ne passe de mon coté. Avez-vous des solutions alternative au timer ou un code beaucoup moins lourd?
 

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
150
#10
Ah mon avis tu gères très mal ton multi-threading, un Thread.Sleep() stoppera toujours ton thread actuel.
Il vaut mieux avoir plusieurs threads.
 
Inscrit
2 Juin 2016
Messages
82
Reactions
3
#11
Utiliser la TPL (https://msdn.microsoft.com/fr-fr/library/dd460717(v=vs.110).aspx) et les tasks. On est en 2016; c'est fini d’utiliser les thread comme ça. Même le ThreadPool (bon c'est utilisé en interne par la TPL mais c'est beaucoup plus sympa la TPL) c'est fini.

Sinon il y a des solutions à côté comme Rx.Net (c'est plus maintenu, c'est dommage c'était vraiment bon) ou Dataflow. (qui fait partie de TPL)
 
Haut Bas