需要高精度时间戳.NET函数
我使用了winapi TimeGetTime
。但它使用Int32
,每49.8天循环一次,返回时间为signed
。
什么是返回类型为Int64
或UInt64
的本机.NET高精度函数,返回毫秒?
从系统启动或过去的任何其他时间返回毫秒数并不重要。
实际上我不需要StopWatch
修改
我的应用程序是多线程的。应为每个线程创建StopWatch
实例。 StopWatch
具有非常高精度的计时器。我只需要1-5ms。
我需要的是像timeGetTime / Environment.TickCount as Int64或DateTime.Ticks,更新分辨率为1-5ms
答案 0 :(得分:1)
如果您使用的是Windows 8或Server 2012或更高版本,请按以下方式使用GetSystemTimePreciseAsFileTime
:
[DllImport("Kernel32.dll", CallingConvention = CallingConvention.Winapi)]
static extern void GetSystemTimePreciseAsFileTime(out long filetime);
public DateTimeOffset GetNow()
{
long fileTime;
GetSystemTimePreciseAsFileTime(out fileTime);
return DateTimeOffset.FromFileTime(fileTime);
}
这比DateTime.UtcNow.Ticks
具有更高,更准确的准确度。
有关详细信息,请参阅MSDN:http://msdn.microsoft.com/en-us/library/windows/desktop/hh706895(v=vs.85).aspx
答案 1 :(得分:0)
您可以使用DateTime.UtcNow.Ticks。这实际上比毫秒更精确。