Le sommeil en boucle lorsque l'application est en cours d'exécution, mais dort trop peu
-
28-09-2019 - |
Question
private static void Main(string[] args)
{
for (;;)
{
TemporaryCityTool.TemporaryCityTool.AddCity();
Console.WriteLine("waiting...");
Thread.Sleep(3600);
}
}
pourquoi Thread.sleep
ne fonctionne pas. Je reçois un message d'attente tout le temps. Je veux que l'application va attendre 10 minutes puis continuer à nouveau.
La solution
Thread.Sleep
prend une valeur en millisecondes, pas secondes, donc cela indique que le thread courant attendre 3,6 secondes. Si vous voulez attendre 10 minutes, utilisez:
Thread.Sleep(1000 * 60 * 10); // 600,000 ms = 600 sec = 10 min
Ceci est probablement une mauvaise utilisation de Sleep
, cependant. Pensez à utiliser un minuteur à la place, de sorte que vous obtenez quelque chose le long des lignes de:
// Fire SomeAction() every 10 minutes.
Timer timer = new Timer(o => SomeAction(), null, 10 * 60 * 1000, -1);
Voir ce fil StackOverflow pour plus de détails à ce sujet.
Autres conseils
L'argument de la la méthode de sommeil est en millisecondes, de sorte que si vous voulez dormir pendant 10 minutes:
Thread.Sleep(10 * 60 * 1000);
3600 est de 3,6 secondes. Si vous voulez dormir pendant 10 minutes, vous devriez le mettre à 600000.
Thread.Sleep(1000 * 60 * 10); // Milliseconds(1000) * Seconds(60) * Minutes(10)
est égal à:
Thread.Sleep(600000);
Thread.sleep est en millisecondes à 10 minutes seraient Thread.sleep (1000 * 60 * 10)
Pourquoi utilisez-vous Thread.sleep, vous pouvez être mieux à l'aide d'une minuterie
10 minutes en millisecondes est 600000. Votre sommeil n'attendre 3,6 secondes. Il est souvent plus clair d'utiliser un timespan:
Thread.Sleep(new TimeSpan(0,10,0));
thx, ma grosse erreur. John Feminella i utiliser du fil maintenant.
private static void Main(string[] args)
{
Thread thrd1 = new Thread(new ThreadStart(Trmain));
thrd1.Start();
}
private static void Trmain()
{
for (; ; )
{
Console.WriteLine("waiting 10 minutes...");
Thread.Sleep(1000 * 60 * 10);
}
}
thx tous