我正在制作连接到计算机的简单频闪仪。 我有这样的循环:
double SleepTime = 1000 / Hz;
while ()
{
BlinkAll();
Thread.Sleep((int)SleepTime);
}
但这是非常不准确的。 如果赫兹 = 666 比 sleep 时间 = 1.5 和 (int) sleep 时间 = 1
这意味着在输出时我得到的是 1000Hz 而不是 666Hz 这是很大的差异。
如何解决这个问题?
附言
这个例子还是不够准确。它更好,但无论如何都不好:
double SleepTime = 1000 / Hz;
Thread.Sleep((int)SleepTime + 0.5)
最佳答案
看看NtDelayExecution (ntdll.dll) ...它似乎具有更好的粒度(单位为 100 纳秒而不是 1 毫秒),尽管我不确定这会有多大帮助,因为我认为 Windows 上的线程每个需要几毫秒的时间片。
关于C# 频闪仪,Thread.Sleep,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4636518/