我有一个关于计时器使用的理解问题,它与错误代码没有直接关系。我想知道发生了什么......
我编写了一个程序,其中一部分通过COM端口从传感器读取数据并将其存储到变量中。这是使用DataReceivedHandler完成的,所以它是在“后台”完成的。现在我需要一个计时器,它每秒从该变量获取实际值并进行一些计算。计算时间约为50-70毫秒,因此1秒应该足够时间。我尝试使用System.Timer.Timer以及System.Threading.Timer,乍一看似乎都正常工作,但是当我让我的程序运行几个小时后,它开始口吃 - 有时候没有计时器事件为秒,然后在一个内部有20个(但不是每个跳过的定时器事件都被捕获 - 许多只是迷路)。 定时器事件是否存储在某个队列中而根本没有得到它们的时间片?据我所知,至少System.Threading.Timer应该在一个额外的线程中工作,以防止...
我通过与BackgroundWorkers合作解决了这个问题,而不是与计时器合作;我创建了一个循环来完成我的工作,然后睡觉(1000毫秒 - 工作时间)。这很好用,为什么我的计时器不能用呢?
非常感谢任何提示!