Dormire in ciclo quando l'applicazione è in esecuzione, ma dorme troppo pochi
-
28-09-2019 - |
Domanda
private static void Main(string[] args)
{
for (;;)
{
TemporaryCityTool.TemporaryCityTool.AddCity();
Console.WriteLine("waiting...");
Thread.Sleep(3600);
}
}
perché Thread.sleep
non funziona. Sto ottenendo messaggio in attesa per tutto il tempo. Voglio che l'applicazione sarà attendere 10 minuti per poi proseguire di nuovo.
Soluzione
Thread.Sleep
ha un valore in millisecondi, non secondi, quindi questo dice solo il thread corrente attendere 3,6 secondi. Se si vuole aspettare 10 minuti, uso:
Thread.Sleep(1000 * 60 * 10); // 600,000 ms = 600 sec = 10 min
Questo è probabilmente un uso inappropriato di Sleep
, però. Considerare l'utilizzo di un timer, invece, in modo da ottenere qualcosa sulla falsariga di:
// Fire SomeAction() every 10 minutes.
Timer timer = new Timer(o => SomeAction(), null, 10 * 60 * 1000, -1);
Vedere questa discussione StackOverflow per maggiori dettagli su questo.
Altri suggerimenti
L'argomento della metodo sonno è in millisecondi, così se volete dormire per 10 minuti:
Thread.Sleep(10 * 60 * 1000);
3600 è di 3,6 secondi. Se si vuole che il sonno per 10 minuti, si dovrebbe impostare a 600000.
Thread.Sleep(1000 * 60 * 10); // Milliseconds(1000) * Seconds(60) * Minutes(10)
che è pari a:
Thread.Sleep(600000);
Thread.sleep è in millisecondi a 10 minuti sarebbero Thread.sleep (1000 * 60 * 10)
Perché stai usando Thread.sleep, si può essere meglio utilizzare un timer
10 minuti in millisecondi è 600.000. Il tuo sonno attenderà solo 3,6 secondi. È spesso più chiaro di utilizzare un periodo:
Thread.Sleep(new TimeSpan(0,10,0));
thx, il mio grande errore. John Feminella io uso filo ora.
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 tutti