1

我有一个应用程序每 x 秒轮询一些设备,我的实现基于每个设备的一个线程。

每个线程都是这样实现的

while(true){
    stopWatch.Start();
    //dowork
    stopWatch.Stop();
    time = (int)(delay - stopWatch.ElapsedMilliseconds);
    stopWatch.Reset();
    sleep(time);
}

现在这是正确的方法还是我应该实现一个每 x 秒触发一次并创建一个新任务的计时器?

PS:每个设备都有轮询码

4

2 回答 2

1

使用循环的线程对您来说工作量更少,并且代码更清晰。所以我建议你这样做。

如果您有很多线程或需要节省资源,请使用计时器或异步睡眠 ( Task.Delay+ )。async/await

于 2013-05-27T10:16:15.573 回答
0

使用在轮询之间休眠的单个线程似乎是最好的方法。它将在睡眠后轮询所需的设备。由于您正在执行一个可能永远不会结束的重复任务,直到程序结束,我不认为使用任务真的适合这种情况,即使它可以使用。

于 2013-05-27T10:12:13.927 回答