-4

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

我用过 winapi TimeGetTime。但它使用Int32,每49.8天循环一次,返回即可signed

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

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

其实我不需要StopWatch

编辑:
我的应用程序是多线程的。StopWatch应该为每个线程创建实例。StopWatch有一个非常高精度的定时器。我只需要 1-5 毫秒。我需要的是类似 timeGetTime / Environment.TickCount as Int64 或 DateTime.Ticks 更新分辨率为 1-5ms

4

2 回答 2

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

于 2014-12-02T21:03:58.233 回答
0

您可以使用 DateTime.UtcNow.Ticks。这实际上比毫秒更精确。

于 2013-01-17T19:24:47.670 回答