1
using System;
2
using System.Runtime.InteropServices;
3
public class A
4
{
5
[DllImport("kernel32.dll")]
6
static extern bool QueryPerformanceCounter([In, Out] ref long lpPerformanceCount);
7
[DllImport("kernel32.dll")]
8
static extern bool QueryPerformanceFrequency([In, Out] ref long lpFrequency);
9
10
static long _f = 0;
11
12
static public long GetTickCount()
13
{
14
long f = _f;
15
16
if (f == 0)
17
{
18
if (QueryPerformanceFrequency(ref f))
19
{
20
_f = f;
21
}
22
else
23
{
24
_f = -1;
25
}
26
}
27
if (f == -1)
28
{
29
return Environment.TickCount * 10000;
30
}
31
long c = 0;
32
QueryPerformanceCounter(ref c);
33
return (long)(((double)c) * 1000 * 10000 / ((double)f));
34
}
35
36
//GetTickCount()为0时的DateTime.Ticks值
37
static long _tc = 0;
38
39
//这个返回的不是真正的精确时间,但时间与时间的差是精确的。
40
//GetExactNow与DateTime.Now的偏差比DateTime.Now的精度还要小,所以该偏差
41
static public DateTime GetExactNow()
42
{
43
if (_tc == 0)
44
{
45
long tc = GetTickCount();
46
DateTime dt = DateTime.Now;
47
_tc = dt.Ticks - tc;
48
return dt;
49
}
50
51
return new DateTime(_tc + GetTickCount());
52
}
53
}
54
using System;2
using System.Runtime.InteropServices;3
public class A4
{5
[DllImport("kernel32.dll")]6
static extern bool QueryPerformanceCounter([In, Out] ref long lpPerformanceCount);7
[DllImport("kernel32.dll")]8
static extern bool QueryPerformanceFrequency([In, Out] ref long lpFrequency);9

10
static long _f = 0;11

12
static public long GetTickCount()13
{14
long f = _f;15

16
if (f == 0)17
{18
if (QueryPerformanceFrequency(ref f))19
{20
_f = f;21
}22
else23
{24
_f = -1;25
}26
}27
if (f == -1)28
{29
return Environment.TickCount * 10000;30
}31
long c = 0;32
QueryPerformanceCounter(ref c);33
return (long)(((double)c) * 1000 * 10000 / ((double)f));34
}35

36
//GetTickCount()为0时的DateTime.Ticks值37
static long _tc = 0;38

39
//这个返回的不是真正的精确时间,但时间与时间的差是精确的。40
//GetExactNow与DateTime.Now的偏差比DateTime.Now的精度还要小,所以该偏差41
static public DateTime GetExactNow()42
{43
if (_tc == 0)44
{45
long tc = GetTickCount();46
DateTime dt = DateTime.Now;47
_tc = dt.Ticks - tc;48
return dt;49
}50

51
return new DateTime(_tc + GetTickCount());52
}53
}54




浙公网安备 33010602011771号