C# 中的计时器对比
时间:2010-10-05 来源:一帆风顺 可能吗
因为在做一个软件,所以好久没写随笔了,还请大家原谅,
最近在研究VC++,和Win API,想实现一个计时器,顺便对比了C#中的计时器
c#中有三种类型的计时器,他们都能实现基本的定时操作,但在精度和实现上有略微的区别
1.System.Threading.Timer; 基于线程的计时器(创建4个新的线程,精度1ms级别)
2.System.Timers.Timer; 基于线程的计时器 (创建4个新的线程,精度1ms级别)和1差不多
3.System.Windows.Threading.DispatcherTimer;基于消息WM_Timer的计时器(不会创建新的线程 精度<1ms 但<1ms会占用大量CPU时间,E5400 50%左右)
1.基于线程的计时器:底层的实现:
创建一个新的线程做死循环
while(true)
{
int CurTime = GetTickCount();
while(GetTickCount()-CurTime < 1)
Sleep(1);//线程发的瓶颈就在这 线程Sleep的精度为1ms级别
}
2.基于消息的计时器实现
SetTimer API函数
KillTimer API函数
以及处理WM_TIMER消息即可
相关阅读 更多 +