我正在编写一个启动计时器的.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”添加到我要理解的值列表中。
答案 0 :(得分:0)
你在这里尝试做什么并不明显。为什么不按照需要经常启动计时器并使用计时器方法定期工作?
对于Sleep,默认情况下它具有一定的粒度,遵循Windows计时器滴答,因此默认情况下您不会获得1毫秒的分辨率。是的,呼叫睡眠1000次而不是一次显然会花费更多的CPU功率,但在大多数情况下,差异可能并不显着。