http://stackoverflow.com/questions/29722838/system-timers-timer-steadily-increasing-the-interval

需要在计时器每次运行后,修正计时器的间隔

通过DateTime的Tick来处理     不过这个修正貌似有点不准

public class Meter{private Timer ReadingTime;private DateTime NextTickTimeWholeSeconds;public Meter(){DateTime now = DateTime.Now;NextTickTimeWholeSeconds = new DateTime(now.Ticks - (now.Ticks % TimeSpan.TicksPerSecond), now.Kind);ReadingTime = new Timer();ReadingTime.Elapsed += new ElapsedEventHandler(PerformReading);ReadingTime.Interval = GetTimeToNextSecond();}public void StartMeter(){ReadingTime.Start();}public void StopMeter(){ReadingTime.Stop();}private double GetTimeToNextSecond(){NextTickTimeWholeSeconds = NextTickTimeWholeSeconds.AddSeconds(1);var interval = NextTickTimeWholeSeconds - DateTime.Now;return interval.Milliseconds < 1 ? GetTimeToNextSecond() : interval.Milliseconds;}/// <summary>/// 定时处理/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void PerformReading(object sender, ElapsedEventArgs e){Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));//Console.WriteLine("Performing reading: " + DateTime.Now.Hour + ":" + DateTime.Now.Minute + ":" + DateTime.Now.Second + "." + DateTime.Now.Millisecond);ReadingTime.Interval = GetTimeToNextSecond();}}

C# + high resolution timer

I found a solution to this problem in the following blog:http://web.archive.org/web/20110910100053/http://www.indigo79.net/archives/27#comment-255

It tells you how to use the multimedia timer to have a timer with high frequency. It is working just fine for me!!!

上面的链接无效,在评论中找到这个http://svn.the-starport.net/utfeditor/UTFEditor/MultimediaTimer.cs

主要是通过调用winmm.dll来计时

Timer计时不准确的解决方案 每次都重新调整,修正误差相关推荐

  1. 微信开发 - 第三方网站接入微信登录、微信支付时,本地 redirect_uri 参数错误导致无法调试的解决方案(微信开放平台)完美解决每次都需要部署到线上测试,在本地使用本地 ip 就能轻松调试

    问题描述 网上的教程都非常乱且无效,本文将站在新手的角度,超级详细的讲解. 本文提供 在微信开放平台,接入微信登录和微信支付时,本文无法调试 redirect_uri 回调错误 的解决方案, 仅需几个 ...

  2. Flash Player帧频、Timer计时 的时间间隔

    对于大部分Flash开发者,都已经知道Flash的帧频.Timer计时并不是十分精确的.如果您已经做过这方面测试,可以略过这篇文章的前面一部分,在后面有关于Flash Player可变跑道的文章链接, ...

  3. QTreeView处理大量数据(使用1000万条数据,每次都只是部分刷新)

    QTreeView处理大量数据(使用1000万条数据,每次都只是部分刷新) 如何使QTreeView快速显示1000万条数据,并且内存占用量少呢?这个问题困扰我很久,在网上找了好多相关资料,都没有找到 ...

  4. jQuery ZeroClipboard中Flash定位不准确的解决方案

    转自波斯马,原文地址<jQuery ZeroClipboard中Flash定位不准确的解决方案> jQuery ZeroClipboard支持在多种浏览器中复制内容到剪贴板,IE.Fire ...

  5. 积分球测试软件无法创建新文档,积分球测试光通量不准确的解决方案

    原标题:积分球测试光通量不准确的解决方案 积分球在测试灯具光通量时与标准值偏低,甚至会达到20%的偏差(设备原理问题,国内国外设备一样),用分布光度计测试光通量准确,但测试效率低,一天约测试8个灯,无 ...

  6. 智能手表 android auto 闪退,小天才电话,升级闪退问题,每次都这样,差评!

    小天才电话,升级闪退问题,每次都这样,差评! 2021-03-03 15:12:13 1点赞 1收藏 0评论 1.怎么说呢?非常好.首先从质量方面,质量非常好,电量方面,冲一次电如果经常玩,电量可以保 ...

  7. IDEA中maven项目每次都要在Rebuild Project才会打包成功问题(1)

    问题的产生: 失败的情况:直接在IDEA中点机maven插件的clean,然后package,这样打出来的包发现居然不能正确运行 成功的打包方式:每次打包都要maven clean,然后在IDEA上点 ...

  8. push代码到github时,每次都要输入用户名和密码的问题

    问题原由 我在Github上 建立了一个小项目TauStreamingServer,可是在每次push代码 的时候,都要求输入用户名和密码,很是麻烦. 如何才能避免每次都输入用户名和密码呢? 解决办法 ...

  9. LISTVIEW嵌套GRIDVIEW的一些处理(点击GRIDVIEW的条目,能够显示他在LISTVIEW中的位置)(对这篇文章的优化处理,不每次都new onItemClickListener)...

    前几天写了点击GRIDVIEW的条目,能够显示他在LISTVIEW中的位置,当时的处理是在ListView的适配器里的GetView方法里每次都new GridView的onItemClickList ...

最新文章

  1. 超详细mysql left join,right join,inner join用法分析
  2. python3 重新学习
  3. Linux 双显卡 黑屏,Ubuntu16.04安装 双显卡安装Nvidia驱动 登录循环 黑屏(通用 终结此类问题)转载...
  4. 【SCOI2014】方伯伯的商场之旅【数位dp】【单峰函数】
  5. springboot项目不加端口号也可以访问项目的方法
  6. go语言mysql删除记录_MySQL数据库删除操作-Go语言中文社区
  7. 多个vue项目合并成一个_再见Vlookup,合并多个表格发现一个最简单方法
  8. 【提前批】22届的同学看过来,百度提前批开始啦~
  9. audio 相关概念梳理记录
  10. 电脑上值得收藏的4个黑科技网站,日常办公中能帮你解决各种麻烦
  11. html转cshtml 基础篇
  12. TBODY标签的作用介绍
  13. 自由技艺 (Liberal arts)
  14. Q 2:真的是格局不够吗?
  15. layui table 获取单元格总是多一个
  16. 新概念二册 Lesson 21 Mad or not?是不是疯了? ( 被动语态)
  17. Java运算符——————03
  18. 京东数科与中铁武汉电气化局达成战略合作 数字科技助力电气化铁路建设
  19. 模拟电路设计(30)---数字滤波器简介
  20. 电脑如何播放杜比视界视频

热门文章

  1. 面向对象与面向过程区别
  2. 分布式 RPC 框架
  3. 红帽计划收购API管理领导者3scale
  4. 小猿圈Python之实现京东秒杀功能代码
  5. shell实现批量在多台windows服务器上执行同一命令并获取返回结果
  6. 数钱数到手抽筋游戏的测试用例
  7. 【BZOJ】1726 [Usaco2006 Nov]Roadblocks第二短路
  8. CentOS 7.3 安装配置RabbitMQ
  9. (原創) 我的Design Pattern之旅[3]:使用template改進Strategy Pattern (OO) (Design Pattern) (C/C++) (template)...
  10. 7. Vulnerability exploitation tools (漏洞利用工具 11个)