C# 频闪仪,Thread.Sleep

标签 c# .net algorithm logic

我正在制作连接到计算机的简单频闪仪。 我有这样的循环:

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/

相关文章:

python - 熵计算的奇怪结果

c# - WCF 模拟的目的

c# - Microsoft Bot Framework : MissingMethodException when Microsoft. Bot.Connector 已更新

c# - 如何使用最新的 Azure SDK .NET API v12 在 Blob 上获取共享访问签名?

javascript - 从 Autodesk Forge 3D 查看器下载文件

.net - 在 FontDialog 中显示颜色选项,没有下划线和删除线选项

c - 如何在另一个链表中获取链表的奇数 inode ?我不想使用双指针

c# - Nuget 在多个项目中创建 app.config 文件

C#/WPF - 从父窗口获取子用户控件内的对象

javascript - 如何从属性值生成变体