高精度时间戳getter,以毫秒为单位返回Int64

时间:2013-01-17 18:57:26

标签: c# .net

需要高精度时间戳.NET函数

我使用了winapi TimeGetTime。但它使用Int32,每49.8天循环一次,返回时间为signed

什么是返回类型为Int64UInt64的本机.NET高精度函数,返回毫秒?

从系统启动或过去的任何其他时间返回毫秒数并不重要。

实际上我不需要StopWatch

修改
我的应用程序是多线程的。应为每个线程创建StopWatch实例。 StopWatch具有非常高精度的计时器。我只需要1-5ms。 我需要的是像timeGetTime / Environment.TickCount as Int64或DateTime.Ticks,更新分辨率为1-5ms

2 个答案:

答案 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。这实际上比毫秒更精确。