在 Windows 上进行可靠的短时间跨度测量



我需要能够准确提供 10 毫秒"滴声"的代码,鉴于许多文章与其他文章关于如何在 Windows 中完成此操作的文章相矛盾,我感到很困惑。

我已经完成了第一步 - 使用多媒体计时器提供 1 米利的睡眠时间。

有没有办法确保睡眠代码在所有机器上工作 高分辨率 无论是真还是假,单处理器还是多处理器系统等?

[编辑]之前的一个问题突出了在多核系统中使用 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;
        }
    }
  }

但我认为这是一个非常丑陋的解决方案......

相关内容

  • 没有找到相关文章

最新更新