如何在C#中获得实时时钟?

时间:2010-05-10 05:46:01

标签: c#

我想要一个精确度为微秒的实时时钟,我该怎么办?

除了秒表之外还有实时时钟吗?

7 个答案:

答案 0 :(得分:15)

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

答案 1 :(得分:7)

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

在Vista / Win7中还有QueryProcessCycleTimeQueryThreadCycleTime,它们将为您提供进程/线程的已用周期数。如果您只想知道流程的有效时间(例如,您没有退出的时间),这非常有用。

答案 2 :(得分:4)

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

答案 3 :(得分:3)

对于高分辨率测量,您可以使用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;
    }
}

答案 4 :(得分:2)

答案 5 :(得分:0)

如果你想要一个好的时间测量,我认为csharp作为高级语言可能不是一个好主意。你可以组装一个简单的程序,点击RTC,然后通过库将它绑定到你的程序。这实际上是你可以得到的最好的场景,没有对象过剩,但它需要一些低级知道如何组合。

答案 6 :(得分:0)

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

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

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