关于C#timer 时间精确度的问题

C#的Timer在Windows系统下默认精度为15.625ms,无法满足毫秒级精度需求。可以使用StopWatch类或GetTickCount API来提高精度。然而,即便将系统定时器调整到1ms,由于操作系统非实时性质,实际执行间隔可能难以稳定在10ms。考虑需求的必要性,避免影响其他应用性能。
摘要由CSDN通过智能技术生成

要精确到毫秒,可以用StopWatch类,或者用GetTickCount API

前者msdn自己查,后者参考http://www.cnblogs.com/jxsoft/archive/2011/10/17/2215366.html

windows系统定时器精度默认是15.625ms,所以一般的办法不行。想要到10ms或者更高的精度需要通过api调整系统定时器到1ms精度,然后使用Socket.Poll来等待,这是能找到的最精确的方式,但是因为操作系统本身非实时,最后真正要每隔10ms执行任务估计很困难。所以最好先想想需求的必要性,再尝试实现。

windows不是“实时操作系统”,定时器误差在50毫秒都是正常的。如果这么干了,电脑上别的大量应用程序的性能会大大降低。windows上跑的是大量复杂的应用,同一时间有上千个线程进行抢先多任务调度,操作系统也很复杂。它不是只有几个非常简单的进程,它不能过分地修改定时器精度。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值