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

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

4

6 回答 6

16

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

有关详细信息,请参阅此 StackOverflow 线程。

于 2010-06-19T15:02:53.363 回答
3

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

Thread.Sleep(10 * 60 * 1000);
于 2010-06-19T15:02:48.700 回答
2

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

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

这等于:

Thread.Sleep(600000);
于 2010-06-19T15:02:21.200 回答
2

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

Thread.Sleep(new TimeSpan(0,10,0));
于 2010-06-19T15:04:35.703 回答
1

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

你为什么使用thread.sleep,你最好使用计时器

于 2010-06-19T15:03:34.567 回答
-1

thx,我的大错。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);
            }
        } 

谢谢大家

于 2010-06-19T15:09:11.540 回答