【问题标题】:High precision timer in C# for synchronization objects time-outC#中用于同步对象超时的高精度计时器
【发布时间】:2013-04-23 10:46:02
【问题描述】:

我有类似下面的代码:

public void acquireReaderLock(int nmsMaxWait)
{
    //'nmsMaxWait' = timeout in milliseconds

    if(_mutex.WaitOne(nmsMaxWait))
    {
        //Need time left for the second wait?
        if(_semaphore.WaitOne(???)
        {
        }
        else
            throw new Exception("Timed out");
    }
    else
        throw new Exception("Timed out");
}

我正在寻找一个高精度计时器。在 C++ 中,我会使用 GetTickCountGetSystemTimeAsFileTime API 来测量经过的时间,但我应该在 C# 中使用什么?

【问题讨论】:

标签: c# .net windows timer


【解决方案1】:

您可能会想到在CLR 中使用StopWatch 最精确的计时类,我们通常在代码执行测量中使用它。

但也有其他计时选项,例如:System.Timers.Timer 类,也可以使用。

正如@Matthew Watson 所言,还有另一个选择:使用Environment.TickCount

【讨论】:

  • 我也会使用秒表,但值得一提的是Environment.TickCount,它与 GetTickCount() 相同
  • +1。虽然我认为这里提到System.Timers.Timer 是不恰当的。计时器用于按计划执行事物。它们不太适合测量经过的时间。
  • 谢谢。我不知道StopWatch 有这么高的分辨率。应该这样做。
猜你喜欢
  • 1970-01-01
  • 2023-03-25
  • 2011-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多