我处于一种情况,我需要每秒执行 X 次操作(刷新 PictureBox 或从套接字缓冲区中提取字节)。我想知道是否有适当的方法来做到这一点。我做了一些研究,我发现解决这个问题的方法很少。

  • 我可以在 while 循环中工作,并不断询问操作系统什么时候可以检查 X 时间是否已经过去。(DateTime.UtcNow)
  • 我可以在while循环中工作并让它休眠一段时间。
  • 我可以在 while 循环中工作并使用 Clock 类来检查耗时。
  • 使用定时器类来引发事件。

  • 这些都是我所知道的让某些事情定期发生的方法。第二种方法不是很精确,但我把它放在这里是为了完成。还有其他方法我应该知道吗?哪一个开销最少?

    我在 VisualStudio 2015 C# 和 .NET 4.6.1 版本中工作

    最佳答案

    使用秒表,与 DateTime.Now 相比,它使用高精度计时器

    DateTime.Now 适用于大约毫秒的精度,而 Stopwatch 适用于微秒。

    // Create new stopwatch.
    Stopwatch stopwatch = new Stopwatch();
    
    // Begin timing.
    stopwatch.Start();
    
    // Do something.
    for (int i = 0; i < 1000; i++)
    {
        Thread.Sleep(1);
    }
    
    // Stop timing.
    stopwatch.Stop();
    
    // Write result.
    Console.WriteLine("Time elapsed: {0}", stopwatch.Elapsed);
    

    关于c# - 测量时间最有效的方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35866125/

    10-17 01:12