c# - Windows 上可靠的短时间跨度测量

标签 c# windows cross-platform multicore time-measurement

我需要能够准确提供 10 毫秒“Ticks”的代码,鉴于许多文章与其他文章就如何在 Windows 中实现这一点相互矛盾,我感到很困惑。

我已经完成了第一步 - 使用多媒体计时器提供 1 英里的 sleep 时间。

有没有办法确保 sleep 代码在所有机器上都有效 IsHighResolution 是真还是假,单处理器系统还是多处理器系统等?

[编辑] 之前的一个问题讨论了在多核系统中使用 StopWatch 的问题: Multicore and thread aware .Net stopwatch? [/编辑]

最佳答案

抱歉,我不能在评论中写这个... 如果你有可能使用第二个线程,你可以 使用循环来浪费时间...像这样:

    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;
        }
    }
  }

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

关于c# - Windows 上可靠的短时间跨度测量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29741808/

相关文章:

c++ - C++中创建文件对话框的跨平台方式

c# - 如何查找列表框中的最大值和最小值

c# - WPF 在 C# 代码中更改工具提示背景

windows - 在 Wix 中运行自定义操作之前添加用户

在 Cygwin 软件包列表中找不到 Openssl

cross-platform - 多个库和可执行文件的 CMakeLists.txt 文件

c# - Linq-to-Sql:使用 LinqDataSource 以编程方式检索数据

C# 使用位域反序列化二进制结构 - 怎么做?

c++ - 如何在 C++ 中仅用一个扬声器播放声音?

c++ - C++ 可以编译成平台独立代码吗?为什么不?