【发布时间】:2014-02-06 12:55:29
【问题描述】:
我正在编写一个 .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' 添加到我要理解的值列表中。
【问题讨论】:
-
你不应该在这里使用
Sleep。你为什么决定这样做? -
这似乎是保持应用程序活动并等待计时器滴答声的明显方法。你会放什么来代替大卫?
-
你用的是什么定时器?就个人而言,我想我可能会摆脱计时器,并在
while (true)循环中调用Thread.Sleep(120000)。 -
David,这是我的第一次尝试,但我换成了计时器,部分原因是它看起来更好(但我可能会倒退!),部分原因是为了在调试输出问题上尝试不同的方法 @987654322 @(顺便说一句,我喜欢我在 Chrome 中的字典想要将 stackoverflow.com 纠正为有争议的人)
-
如果您希望线程在等待下一个滴答声时执行其他工作,您通常会使用计时器。但是,如果您的线程可以空闲到下一个滴答声,那么纯
while (true)和Sleep效果很好。
标签: .net multithreading .net-micro-framework