重复Thread.Sleep(200)和Thread.Sleep(1)做同样的事情吗?

时间:2014-02-06 12:55:29

标签: .net multithreading .net-micro-framework

我正在编写一个启动计时器的.Net Micro Framework应用程序,然后在每次计时器滴答发生时执行操作。这是代码:

public void Run()
{
    var timer = new Timer(DoStuff, null, 120000, 120000);
    while (true)
    {
        Thread.Sleep(1);
    }
}

所以每两分钟调用一次DoStuff方法。我需要while循环来防止应用程序退出。传递给Thread.Sleep的毫秒选择有什么影响?小值(如1)是否会使应用程序对计时器的反应更快?更大的值会消耗更少的CPU功率吗?

==========编辑==========

我刚刚在GHI page about .Net Micro Framework Timers上的这个缩减示例中找到了我应该(可能)使用的调用而不是while循环:

Thread.Sleep(Timeout.Infinite);

我可以将“infinte”添加到我要理解的值列表中。

1 个答案:

答案 0 :(得分:0)

你在这里尝试做什么并不明显。为什么不按照需要经常启动计时器并使用计时器方法定期工作?

对于Sleep,默认情况下它具有一定的粒度,遵循Windows计时器滴答,因此默认情况下您不会获得1毫秒的分辨率。是的,呼叫睡眠1000次而不是一次显然会花费更多的CPU功率,但在大多数情况下,差异可能并不显着。