c# - 强制定时器在设定的时间内循环[C#]

标签 c# performance timer

我正在用 C# .Net 重写一个 VB 6.0 程序进行实习。它测量来自精密磨床的输入数据,并给出其精度读数。该程序的很多内容都是在 Timer 对象中完成的,间隔为 10。该程序尚未完成,因此尚未在实际机器上进行测试,但我有一个生成正弦波的调试模拟(以确保在接收数据时,拨号盘和数字都按预期运行)。

我使用的是 WinForms 和 Timer 对象,而不是 System.Threading.Timer(尽管如果这听起来是更好的选择,无论如何我愿意使用它)。我使用 System.Diagnostics.Stopwatch ElapsedTicks 来计算 Timer 从头到尾平均循环了多少个滴答声。在 Form1 上,计时器通常需要大约 19500 个滴答。当它切换到 Form2 时,下降到 15000 左右,在 Form3 上甚至更低到 11000。

现在,Form3 的计算速度更快是有道理的,因为它跳过了一些不需要运行的代码部分。 Form2 应该运行整个计时器。奇怪的是,在切换到 Form2 之后,再回到 Form1,计时器保持在 16000 左右,并且每次在表单之间切换时都会稍微快一些。间隔始终保持恒定 10。

我不确定它在做什么,或者我如何才能强制它以恒定速率运行。此外,我不确定它是否重要。它一直困扰着我,但我不确定当它的程序从机器接收实际数据时它的评估速度更快是否重要。

如果有人对计时器为何如此运行,或如何限制它以恒定速率运行,或者即使我是否应该担心它有任何建议,他们将不胜感激。

谢谢你的时间

最佳答案

当你说周期时,你是指执行事件逻辑所花费的时间还是定时器滴答之间的时间? UI 计时器可能不是那么准确,因为它在 UI 线程上运行。

老实说,这听起来像是您需要实时要求,这是您不会轻易(或根本不会)获得的东西。您还必须应对在整个过程中任意运行的垃圾回收。

我不担心,尽管我可能会使用线程计时器,而不是 UI 计时器。

关于c# - 强制定时器在设定的时间内循环[C#],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3158982/

相关文章:

javascript - "return false"如何优化您的脚本

javascript - Angular 不允许我将表达式放入 <timer> 元素属性中

swift - 如何在后台继续动画和uitimer

c# - 转换字符串之间的区别

c# - 在 ASP.NET MVC 中通过 jQuery 提交表单时传递参数

将长数组转换为字节数组的Java native 方法

android - 自动填充数据库。(Android/新手)

c# - WMI 性能计数器查询问题

c# - 存储库中添加和更新方法的特定实体对象

java - Java 定时器中的意外错误