2

我已经开始使用 C# (VS2010 .Net Fw 4.0) 进行桌面应用程序开发,涉及多个计时器。

起初,我使用System.Timers来通过 USB 将数据发送到数据总线。我的观点是,我需要以几个特定的​​时间间隔发送不同的周期性二进制消息,例如 10ms、20ms、40ms、100ms、500ms、1000ms ....

在每个计时器中,我都有一个回调函数,它必须为每个引发的事件发送正确的数据流。

问题是当我有全部信号工作时,实际间隔与预期不同(3000ms 增加到 3500,100ms 增加到 340),因为当我将 10ms 增加到 40ms 计时器时,cpu 几乎 100% 过载并丢失所有精度。

我正在使用 2GB RAM 和 2CPU 内核的 VMWare 工作。主机是 i7-2600K CPU @ 3,40GHz。我认为这不是问题。(但我认为)。

在我写到这里之前,我一直在寻找一个关于如何使用最优化的资源消耗更精确地计时的答案。但我发现它并不具体。

我已经知道System.Diagnostics.Stopwatch在这里阅读它,但是这个类没有事件。还有System.Windows.Forms.Timer但更不精确,分辨率低。

这里有一个很好的微秒分辨率实现,但这是我的 CPU 超载的原因!

你觉得我接下来的步骤怎么样!?我会很感激你有任何帮助或想法

10% 的时间分辨率是 10ms 间隔内的目标!

我会澄清你需要的任何额外信息!

4

0 回答 0