高精度定时器对象超时

高精度定时器对象超时

问题描述:

我有类似下面的代码:高精度定时器对象超时

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#中使用什么?

+2

任何你不使用[ReaderWriterLockSlim类](http://msdn.microsoft.com/en-us/library/system.threading.readerwriterlockslim.aspx)的原因? – dtb 2013-04-23 10:51:29

+0

@dtb:不支持命名锁。 – c00000fd 2013-04-23 22:37:42

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

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

作为@Matthew Watson提到,还有另一种选择:使用。

+1

我也会使用秒表,但值得一提的是[Environment.TickCount](http://msdn.microsoft.com/en-us/library/system.environment.tickcount.aspx),它与GetTickCount() – 2013-04-23 10:53:18

+0

@MatthewWatson:谢谢,你的建议编辑回答。 – Tigran 2013-04-23 10:57:56

+2

+1。虽然我认为这里提到'System.Timers.Timer'是不合适的。定时器用于按计划执行任务。它们对于测量流逝的时间并不是很好。 – 2013-04-23 11:26:16