【问题标题】:how to get a real time clock in C#?如何在 C# 中获取实时时钟?
【发布时间】:2011-02-17 12:54:19
【问题描述】:

我想要一个精确到微秒的实时时钟,我该怎么做?

除了秒表还有其他实时时钟吗?

【问题讨论】:

标签: c#


【解决方案1】:

如果您无法访问互联网并且想要实时获得软件的定时试用许可证,那么您可以使用带有实时时钟的 USB 加密狗。

它的时间计算由电池驱动的内部时钟驱动。您可以使用这些类型的加密狗附带的 API 函数从 USB 加密狗获取时间。

EX-http://www.senselock-europe.com/en/elite-el-rtc-dongle.html

【讨论】:

    【解决方案2】:

    如果你想要一个好的时间测量,我认为 csharp 作为一种高级语言可能不是一个好主意。您可以组装一个简单的程序来访问 RTC,然后通过库将其绑定到您的程序。从字面上看,这是您可以在没有对象悬垂的情况下获得的最佳方案,但它需要一些低层次的知识如何组合在一起。

    【讨论】:

      【解决方案3】:

      System.Diagnostics.Stopwatch 使用 QueryPerformanceCounterQueryPerformanceFrequency Windows API。跨机器的分辨率不是标准的,但通常在微秒级(有关更多信息,请参阅this KB article)。

      在 Vista/Win7 中还有 QueryProcessCycleTimeQueryThreadCycleTime,它们将为您提供进程/线程的经过周期数。如果您只想知道进程的活动时间(例如,您没有被关闭的时间),这很有用。

      【讨论】:

        【解决方案4】:

        对于高分辨率测量,您可以使用QueryPerformanceCounter 函数:

        class Program
        {
            [DllImport("kernel32.dll")]
            private static extern void QueryPerformanceCounter(ref long ticks);
        
            static void Main()
            {
                long startTicks = 0L;
                QueryPerformanceCounter(ref startTicks);
        
                // some task
        
                long endTicks = 0L;
                QueryPerformanceCounter(ref endTicks);
                long res = endTicks - startTicks;
            }
        }
        

        【讨论】:

        • 这相当于 System.Diagnostics.Stopwatch 中的功能。
        • 克里斯是对的。秒表在封面下方使用 kernel32 QueryPerformanceCounter,因此没有理由使用此代码(使用 .NET 2.0 或更高版本时)。对于仍在使用 .NET 1.1 的可怜人来说,这段代码仍然有用。
        【解决方案5】:
        【解决方案6】:

        .NET 中可用的最精确计时器是StopWatch

        【讨论】:

          【解决方案7】:

          您需要System.Diagnostics.Stopwatch,它可以精确到微秒(取决于硬件限制)测量时间间隔。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-08-31
            • 1970-01-01
            • 2018-07-15
            • 2011-03-14
            • 2023-03-10
            • 1970-01-01
            相关资源
            最近更新 更多