2010-05-10 23 views
10

我想要一个精度为微秒的实时时钟,我该怎么做?如何在C#中获得实时时钟?

是否有除秒表以外的实时时钟;

+8

为什么 “除了秒表”?是不是像问:“我想存储一个字符串,是否有字符串类型而不是字符串?” – 2010-05-10 06:25:58

+0

可能重复的[可以在生产代码中使用秒表?](http://stackoverflow.com/questions/2805362/can-stopwatch-be-used-in-production-code) – BFree 2010-05-10 18:48:55

回答

15

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

+2

+1:不知道秒表。 – 2010-05-10 05:49:52

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; 
    } 
} 
+3

这相当于System.Diagnostics.Stopwatch中的功能。 – 2010-05-10 06:28:00

+0

克里斯是对的。 Stopwatch使用封面下方的kernel32'QueryPerformanceCounter',所以没有理由使用此代码(使用.NET 2.0或更高版本时)。这段代码对于仍在使用.NET 1.1的可怜灵魂仍然有用。 – Steven 2010-05-10 08:31:37

0

如果你想要一个很好的时间测量,我认为csharp作为高级语言可能不是一个好主意。你可以组装一个简单的程序,切换到RTC,然后通过库将其绑定到你的程序。这实际上是最好的情况下,你可以得到没有对象悬而未决,但它需要一些低水平知道如何放在一起。

0

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

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

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

相关问题