我需要能够准确提供 10 毫秒的“滴答声”的代码,并且鉴于许多文章与其他一些关于如何在 Windows 中完成此任务相矛盾的文章,我感到很困惑。
我已经完成了第一步 - 使用多媒体计时器提供 1 英里的睡眠。
有没有办法确保睡眠代码可以在所有机器上运行 IsHighResolution 无论是真还是假,单处理器或多处理器系统等?
[编辑] 上一个关于在多核系统中使用 StopWatch 的问题的问题: 多核和线程感知 .Net 秒表? [/编辑]
我需要能够准确提供 10 毫秒的“滴答声”的代码,并且鉴于许多文章与其他一些关于如何在 Windows 中完成此任务相矛盾的文章,我感到很困惑。
我已经完成了第一步 - 使用多媒体计时器提供 1 英里的睡眠。
有没有办法确保睡眠代码可以在所有机器上运行 IsHighResolution 无论是真还是假,单处理器或多处理器系统等?
[编辑] 上一个关于在多核系统中使用 StopWatch 的问题的问题: 多核和线程感知 .Net 秒表? [/编辑]
对不起,我不能在评论中写这个......如果你有可能使用第二个线程,你可以使用循环来浪费时间......像这样:
class yourTimer{
public void startTimer(Action a)
{
ParameterizedThreadStart fu = new ParameterizedThreadStart(waiter);
Thread t1 = new Thread(fu);
t1.Start(a);
}
public void stopTimer()
private void waiter(object o)
{
Action ac = (Action)o;
while(waitin)
{
if(DateTime.Now.Millisecond%10==0)
{
ac.Invoke();
}
continue;
}
}
}
但我认为这是一个非常丑陋的解决方案......