Спи в петле, когда приложение работает, но спит слишком мало
-
28-09-2019 - |
Вопрос
private static void Main(string[] args)
{
for (;;)
{
TemporaryCityTool.TemporaryCityTool.AddCity();
Console.WriteLine("waiting...");
Thread.Sleep(3600);
}
}
Зачем Thread.sleep
не работает. Я получаю сообщение ожидание все время. Я хочу, чтобы это приложение будет ждать 10 минут, а затем снова продолжайте.
Решение
Thread.Sleep
Получает значение в миллисекундах, а не секунды, поэтому это только говорит текущий поток, чтобы дождаться 3,6 секунды. Если вы хотите подождать 10 минут, используйте:
Thread.Sleep(1000 * 60 * 10); // 600,000 ms = 600 sec = 10 min
Это, вероятно, ненадлежащее использование Sleep
, хотя. Попробуйте использовать таймер вместо этого, чтобы вы получили что-то вдоль линий:
// Fire SomeAction() every 10 minutes.
Timer timer = new Timer(o => SomeAction(), null, 10 * 60 * 1000, -1);
Видеть эта резьба стоковой двери Для более подробной информации о том.
Другие советы
Аргумент Спать Метод находится в миллисекундах, поэтому, если вы хотите спать на 10 минут:
Thread.Sleep(10 * 60 * 1000);
3600 - 3,6 секунды. Если вы хотите, чтобы он сплю на 10 минут, вы должны установить его до 600000.
Thread.Sleep(1000 * 60 * 10); // Milliseconds(1000) * Seconds(60) * Minutes(10)
Что равно:
Thread.Sleep(600000);
Thrad.sleep находится в миллиаке секунды 10 минут будет нить.
Почему вы используете Thread.sleep, вы можете лучше использовать таймер
10 минут в миллисекундах составляет 600 000 человек. Ваш сон будет ждать только 3,6 секунды. Часто более четко использовать Timepan:
Thread.Sleep(new TimeSpan(0,10,0));
спасибо, моя большая ошибка. Джон Феминелла я использую нить сейчас.
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);
}
}
все все