高精度定时器对象超时
我有类似下面的代码:高精度定时器对象超时
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++中,我会使用GetTickCount或GetSystemTimeAsFileTime API来测量已过去的时间,但我应该在C#中使用什么?
您可能会想到在CLR
中使用StopWatch这个最精确的时序类,我们通常在代码执行测量中使用它。
但也有其他计时选项,如:System.Timers.Timer类,也可以使用。
作为@Matthew Watson提到,还有另一种选择:使用。
我也会使用秒表,但值得一提的是[Environment.TickCount](http://msdn.microsoft.com/en-us/library/system.environment.tickcount.aspx),它与GetTickCount() – 2013-04-23 10:53:18
@MatthewWatson:谢谢,你的建议编辑回答。 – Tigran 2013-04-23 10:57:56
+1。虽然我认为这里提到'System.Timers.Timer'是不合适的。定时器用于按计划执行任务。它们对于测量流逝的时间并不是很好。 – 2013-04-23 11:26:16
任何你不使用[ReaderWriterLockSlim类](http://msdn.microsoft.com/en-us/library/system.threading.readerwriterlockslim.aspx)的原因? – dtb 2013-04-23 10:51:29
@dtb:不支持命名锁。 – c00000fd 2013-04-23 22:37:42