Спи в петле, когда приложение работает, но спит слишком мало

StackOverflow https://stackoverflow.com/questions/3075921

  •  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);
            }
        } 

все все

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top