1 调用WIN API中的GetTickCount
[DllImport("kernel32")]
static extern uint GetTickCount();
从操作系统启动到现在所经过的毫秒数,精度为1毫秒,经简单测试发现其实误差在大约在15ms左右
缺点:返回值是uint,最大值是2的32次方,因此如果服务器连续开机大约49天以后,该方法取得的返回值会归零
用法:
1
2
3
|
uint
s1 = GetTickCount();
Thread.Sleep(2719);
Console.WriteLine(GetTickCount() - s1);
//单位毫秒
|
2 调用WIN API中的timeGetTime
[DllImport("winmm")]
static extern uint timeGetTime();
常用于多媒体定时器中,与GetTickCount类似,也是返回操作系统启动到现在所经过的毫秒数,精度为1毫秒。
一般默认的精度不止1毫秒(不同操作系统有所不同),需要调用timeBeginPeriod与timeEndPeriod来设置精度
[DllImport(
"
winmm
")]
static
extern
void timeBeginPeriod(
int t); [DllImport(
"
winmm
")]
static
extern
void timeEndPeriod(
int t);
缺点:与GetTickCount一样,受返回值的最大位数限制。
用法:
1
2
3
4
5
|
timeBeginPeriod(1);
uint
start = timeGetTime();
Thread.Sleep(2719);
Console.WriteLine(timeGetTime() - start);
//单位毫
|