您的位置:首页 > 编程语言 > C#

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

2015-12-28 15:59 351 查看
转自:http://bbs.csdn.net/topics/390952917

我想用精确的时间计算,需要精确到毫秒级别,代码运行后发下有误差。请教高人怎么实现。

C# code

?
结果如图:



要精确到毫秒,可以用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上跑的是大量复杂的应用,同一时间有上千个线程进行抢先多任务调度,操作系统也很复杂。它不是只有几个非常简单的进程,它不能过分地修改定时器精度。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: