C#实现毫秒级计时器

C#的Timer是典型的好看不好用,虽然Interval的最小值可以写1,但实际精度却只能达到几十毫秒。当我们需要毫秒级的计时器的时候,就只能想别的办法了。网上可以查到很多解决办法,下面只写我用的一种,精度可至1ms.
 

       [DllImport("winmm")]
        static extern uint timeGetTime();

        [DllImport("winmm")]
        static extern void timeBeginPeriod(int t);

        [DllImport("winmm")]
        static extern uint timeEndPeriod(int t);


      private void  timer()
        {
            uint timerstart = timeGetTime();   
            while (true)
            {                       
                uint i = 0;         
                while (i <N)     //N为时间间隔(ms)
                {
                     i = timeGetTime() - timerstart;
                }
                timerstart = timeGetTime();
                timerfunction();               //需要循环运行的函数;           
            }          
        }

main()里添加                  

Thread  timerthread = new Thread(timer);

timeBeginPeriod(1); 

timerthread.Start();


停止运行代码如下:

timerthread.Abort();

timeEndPeriod(1);




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值