在应用程序运行时睡眠循环,但睡眠太少

时间:2010-06-19 15:00:41

标签: c# sleep thread-sleep

private static void Main(string[] args)
{
    for (;;)
    {
        TemporaryCityTool.TemporaryCityTool.AddCity();
        Console.WriteLine("waiting...");
        Thread.Sleep(3600);
    }
}

为什么Thread.sleep无效。我一直在等待消息。我希望该应用程序等待10分钟,然后再继续。

6 个答案:

答案 0 :(得分:15)

Thread.Sleep 取一个以毫秒为单位的值,而不是秒,因此这只会告诉当前线程等待3.6秒。如果您想等待10分钟,请使用:

Thread.Sleep(1000 * 60 * 10);  // 600,000 ms = 600 sec = 10 min

但这可能是对Sleep的不当使用。考虑使用Timer,以便获得以下内容:

// Fire SomeAction() every 10 minutes.
Timer timer = new Timer(o => SomeAction(), null, 10 * 60 * 1000, -1);

有关详细信息,请参阅 this StackOverflow thread

答案 1 :(得分:3)

Sleep方法的参数以毫秒为单位,所以如果你想睡10分钟:

Thread.Sleep(10 * 60 * 1000);

答案 2 :(得分:2)

3600是3.6秒。如果你想让它睡10分钟,你应该把它设置为600000。

Thread.Sleep(1000 * 60 * 10);  // Milliseconds(1000) * Seconds(60) * Minutes(10)

等于:

Thread.Sleep(600000);

答案 3 :(得分:1)

thread.sleep以毫秒为单位10分钟将是thread.sleep(1000 * 60 * 10)

为什么使用thread.sleep,使用计时器可能会更好

答案 4 :(得分:1)

以毫秒为单位的10分钟是600,000。你的睡眠只会等待3.6秒。使用时间跨度通常更清晰:

Thread.Sleep(new TimeSpan(0,10,0));

答案 5 :(得分:-1)

是的,我的大错。 John Feminella我现在使用线程。

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

全部